From af7069ac215af65f462682747462be71608f51a1 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 15 Nov 2023 11:32:23 -0500 Subject: [PATCH] Include and fetch a BIOS. --- Machines/PCCompatible/PCCompatible.cpp | 9 +++++++++ Machines/Utility/ROMCatalogue.cpp | 2 ++ Machines/Utility/ROMCatalogue.hpp | 3 +++ ROMImages/PCCompatible/GLABIOS_0.2.5_8T.ROM | Bin 0 -> 8192 bytes ROMImages/PCCompatible/readme.txt | 5 +++++ 5 files changed, 19 insertions(+) create mode 100644 ROMImages/PCCompatible/GLABIOS_0.2.5_8T.ROM create mode 100644 ROMImages/PCCompatible/readme.txt diff --git a/Machines/PCCompatible/PCCompatible.cpp b/Machines/PCCompatible/PCCompatible.cpp index 924756029..80288da8e 100644 --- a/Machines/PCCompatible/PCCompatible.cpp +++ b/Machines/PCCompatible/PCCompatible.cpp @@ -25,9 +25,18 @@ class ConcreteMachine: ) { // This is actually a MIPS count; try 3 million. set_clock_rate(3'000'000); + + // Fetch the BIOS. [8088 only, for now] + ROM::Request request = ROM::Request(ROM::Name::PCCompatibleGLaBIOS); + auto roms = rom_fetcher(request); + if(!request.validate(roms)) { + throw ROMMachine::Error::MissingROMs; + } } void run_for([[maybe_unused]] const Cycles cycles) override {} + + private: }; diff --git a/Machines/Utility/ROMCatalogue.cpp b/Machines/Utility/ROMCatalogue.cpp index 930a0d701..0d6a42f63 100644 --- a/Machines/Utility/ROMCatalogue.cpp +++ b/Machines/Utility/ROMCatalogue.cpp @@ -567,6 +567,8 @@ Description::Description(Name name) { case Name::OricMicrodisc: *this = Description(name, "Oric", "the Oric Microdisc ROM", "microdisc.rom", 8*1024, 0xa9664a9cu); break; case Name::Oric8DOSBoot: *this = Description(name, "Oric", "the 8DOS boot ROM", "8dos.rom", 512, 0x49a74c06u); break; + case Name::PCCompatibleGLaBIOS: *this = Description(name, "PCCompatible", "8088 GLaBIOS 0.2.5", "GLABIOS_0.2.5_8T.ROM", 8 * 1024, 0x9576944cu); break; + // 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::MSXJapaneseBIOS: *this = Description(name, "MSX", "a Japanese MSX BIOS", "msx-japanese.rom", 32*1024, 0xee229390u); break; diff --git a/Machines/Utility/ROMCatalogue.hpp b/Machines/Utility/ROMCatalogue.hpp index 2580ad70c..54571bb98 100644 --- a/Machines/Utility/ROMCatalogue.hpp +++ b/Machines/Utility/ROMCatalogue.hpp @@ -132,6 +132,9 @@ enum Name { OricMicrodisc, Oric8DOSBoot, + // PCCompatible. + PCCompatibleGLaBIOS, + // Sinclair QL. SinclairQLJS, diff --git a/ROMImages/PCCompatible/GLABIOS_0.2.5_8T.ROM b/ROMImages/PCCompatible/GLABIOS_0.2.5_8T.ROM new file mode 100644 index 0000000000000000000000000000000000000000..717a289b0755303f52a531481d2a2c08b932156b GIT binary patch literal 8192 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