X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Feeprom.cpp;h=4b8dda8981ef31e0b77d68c64b2993a5d059f1ed;hb=371821533a5a070a15fa1e7f2da2de7b94731bda;hp=35e0d4d63ce575690407b5e0642bbfd97619a842;hpb=d239de704f276a75d927900e3d413a44cc87116c;p=virtualjaguar diff --git a/src/eeprom.cpp b/src/eeprom.cpp index 35e0d4d..4b8dda8 100644 --- a/src/eeprom.cpp +++ b/src/eeprom.cpp @@ -4,6 +4,13 @@ // by Cal2 // GCC/SDL port by Niels Wagenaar (Linux/WIN32) and Caz (BeOS) // Cleanups/enhancements by James L. Hammons +// (C) 2010 Underground Software +// +// JLH = James L. Hammons +// +// Who When What +// --- ---------- ------------------------------------------------------------- +// JLH 01/16/2010 Created this log ;-) // #include "eeprom.h" @@ -48,7 +55,7 @@ static bool foundEEPROM = false; void EepromInit(void) { - sprintf(eeprom_filename, "%s%08X.eep", vjs.EEPROMPath, (unsigned int)jaguarMainRomCRC32); + sprintf(eeprom_filename, "%s%08X.eep", vjs.EEPROMPath, (unsigned int)jaguarMainROMCRC32); FILE * fp = fopen(eeprom_filename, "rb"); if (fp) @@ -193,6 +200,7 @@ static void eeprom_set_di(uint32 data) if (jerry_writes_enabled) for(int i=0; i<64; i++) eeprom_ram[i] = jerry_ee_data; + EEPROMSave(); // Save it NOW! //else // WriteLog("eeprom: not writing because read only\n"); @@ -231,6 +239,7 @@ static void eeprom_set_di(uint32 data) //WriteLog("eeprom: writing 0x%.4x at 0x%.2x\n",jerry_ee_data,jerry_ee_address_data); if (jerry_writes_enabled) eeprom_ram[jerry_ee_address_data] = jerry_ee_data; + EEPROMSave(); // Save it NOW! jerry_ee_state = EE_STATE_BUSY; break; @@ -253,6 +262,7 @@ static void eeprom_set_di(uint32 data) //WriteLog("eeprom: erasing 0x%.2x\n",jerry_ee_address_data); if (jerry_writes_enabled) eeprom_ram[jerry_ee_address_data] = 0xFFFF; + jerry_ee_state = EE_STATE_BUSY; break; case EE_READ_DATA: @@ -260,9 +270,11 @@ static void eeprom_set_di(uint32 data) jerry_ee_data <<= 1; jerry_ee_data |= data; jerry_ee_data_cnt--; + if (!jerry_ee_data_cnt) { jerry_ee_state = jerry_ee_rstate; + if (jerry_ee_direct_jump) eeprom_set_di(data); } @@ -272,10 +284,12 @@ static void eeprom_set_di(uint32 data) jerry_ee_address_data |= data; jerry_ee_address_cnt--; // WriteLog("eeprom:\t%i bits remaining\n",jerry_ee_address_cnt); + if (!jerry_ee_address_cnt) { jerry_ee_state = jerry_ee_rstate; //WriteLog("eeprom:\t\tread address 0x%.2x\n",jerry_ee_address_data); + if (jerry_ee_direct_jump) eeprom_set_di(data); } @@ -314,6 +328,7 @@ static uint32 eeprom_get_do(void) case EE_STATE_2_0: jerry_ee_data_cnt--; data = (eeprom_ram[jerry_ee_address_data] & (1 << jerry_ee_data_cnt)) >> jerry_ee_data_cnt; + if (!jerry_ee_data_cnt) { //WriteLog("eeprom: read 0x%.4x at 0x%.2x cpu %i pc=0x%.8x\n",eeprom_ram[jerry_ee_address_data],jerry_ee_address_data,jaguar_cpu_in_exec,s68000readPC());