diff --git a/devices/sound/awacs.h b/devices/sound/awacs.h
index eb8a245..c2c51c2 100644
--- a/devices/sound/awacs.h
+++ b/devices/sound/awacs.h
@@ -21,7 +21,7 @@ along with this program. If not, see .
/** AWAC sound devices family definitions.
- Audio Waveform Aplifier and Converters (AWACs) is a family of custom audio
+ Audio Waveform Amplifier and Converters (AWACs) is a family of custom audio
chips used in Power Macintosh.
*/
diff --git a/machines/machinegossamer.cpp b/machines/machinegossamer.cpp
index 453855d..e05f975 100644
--- a/machines/machinegossamer.cpp
+++ b/machines/machinegossamer.cpp
@@ -26,6 +26,7 @@ along with this program. If not, see .
#include
#include
+#include
#include
#include
#include
@@ -41,6 +42,12 @@ along with this program. If not, see .
#include
#include
+// EEPROM ID content for a Whisper personality card.
+const uint8_t WhisperID[16] = {
+ 0x0F, 0xAA, 0x55, 0xAA, 0x57, 0x68, 0x69, 0x73, 0x70, 0x65, 0x72, 0x00,
+ 0x00, 0x00, 0x00, 0x02
+};
+
static void setup_ram_slot(std::string name, int i2c_addr, int capacity_megs) {
if (!capacity_megs)
return;
@@ -95,6 +102,14 @@ int initialize_gossamer(std::string& id)
I2CBus* i2c_bus = dynamic_cast(gMachineObj->get_comp_by_type(HWCompType::I2C_HOST));
i2c_bus->register_device(0x28, dynamic_cast(gMachineObj->get_comp_by_name("Athens")));
+ // create ID EEPROM for the Whisper personality card and register it with the I2C host
+ gMachineObj->add_device("Perch", std::unique_ptr(new I2CProm(0x53, 256)));
+ I2CProm* perch_id = dynamic_cast(gMachineObj->get_comp_by_name("Perch"));
+ perch_id->fill_memory(0, 256, 0);
+ perch_id->fill_memory(32, 223, 0xFF);
+ perch_id->set_memory(0, WhisperID, sizeof(WhisperID));
+ i2c_bus->register_device(0x53, perch_id);
+
// initialize virtual CPU and request MPC750 CPU aka G3
ppc_cpu_init(grackle_obj, PPC_VER::MPC750, 16705000ULL);