Fix compiler warnings/errors

This commit is contained in:
sanni 2024-08-16 16:53:55 +02:00
parent edc2b2fa15
commit 06243694d4
5 changed files with 353 additions and 279 deletions

View File

@ -291,7 +291,7 @@ void writeData3F_2600(uint16_t addr, uint8_t data) {
boolean checkE7(uint16_t bank) { boolean checkE7(uint16_t bank) {
writeData_2600(0x1800, 0xFF); writeData_2600(0x1800, 0xFF);
readData_2600(0x1FE0 + bank); readData_2600(0x1FE0 + bank);
uint32_t testdata = (readData_2600(0x1000) << 24) | (readData_2600(0x1001) << 16) | (readData_2600(0x1002) << 8) | (readData_2600(0x1003)); uint32_t testdata = ((uint32_t)readData_2600(0x1000) << 24) | ((uint32_t)readData_2600(0x1001) << 16) | (readData_2600(0x1002) << 8) | (readData_2600(0x1003));
return (testdata == 0xFFFFFFFF); return (testdata == 0xFFFFFFFF);
} }

View File

@ -43,7 +43,8 @@
Uzlopak, sakman55, Tombo89, scrap-a, borti4938, vogelfreiheit, CaitSith2, Modman, Chomemel, Uzlopak, sakman55, Tombo89, scrap-a, borti4938, vogelfreiheit, CaitSith2, Modman, Chomemel,
philenotfound, karimhadjsalem, nsx0r, ducky92, niklasweber, Lesserkuma, BacteriaMage, qufb, philenotfound, karimhadjsalem, nsx0r, ducky92, niklasweber, Lesserkuma, BacteriaMage, qufb,
vpelletier, Ancyker, mattiacci, RWeick, ButThouMust, partlyhuman, fakkuyuu, hxlnt, breyell, vpelletier, Ancyker, mattiacci, RWeick, ButThouMust, partlyhuman, fakkuyuu, hxlnt, breyell,
smesgr9000, joshman196, PsychoFox11, plaidpants, LuigiBlood, InvalidInterrupt smesgr9000, joshman196, PsychoFox11, plaidpants, LuigiBlood, InvalidInterrupt, andy-miles,
wfmarques
And to nocash for figuring out the secrets of the SFC Nintendo Power cartridge. And to nocash for figuring out the secrets of the SFC Nintendo Power cartridge.

View File

@ -129,8 +129,7 @@ void jagMenu() {
fileBrowser(FS(FSTRING_SELECT_FILE)); fileBrowser(FS(FSTRING_SELECT_FILE));
display_Clear(); display_Clear();
writeJagEEP(); writeJagEEP();
} } else {
else {
println_Msg(F("Cart has no EEPROM")); println_Msg(F("Cart has no EEPROM"));
display.display(); display.display();
} }
@ -157,8 +156,7 @@ void jagMenu() {
display_Clear(); display_Clear();
writeJagFLASH(); writeJagFLASH();
verifyJagFLASH(); verifyJagFLASH();
} } else {
else {
println_Msg(F("Cart has no FLASH")); println_Msg(F("Cart has no FLASH"));
display.display(); display.display();
} }
@ -426,8 +424,7 @@ void setup_Jag() {
strcpy(romName, "jagMemorytrack"); strcpy(romName, "jagMemorytrack");
jagCartSize = 0x20000; jagCartSize = 0x20000;
jagflaSize = 0x20000; jagflaSize = 0x20000;
} } else
else
setCart_Jag(); setCart_Jag();
getJagCartInfo(); getJagCartInfo();
@ -448,8 +445,7 @@ void getJagCartInfo() {
if (jagMemorytrack) { if (jagMemorytrack) {
print_Msg(jagCartSize / 1024); print_Msg(jagCartSize / 1024);
println_Msg(F(" KB")); println_Msg(F(" KB"));
} } else {
else {
print_Msg(jagCartSize / 1024 / 1024); print_Msg(jagCartSize / 1024 / 1024);
println_Msg(F(" MB")); println_Msg(F(" MB"));
@ -458,8 +454,7 @@ void getJagCartInfo() {
print_Msg(F("EEPROM: ")); print_Msg(F("EEPROM: "));
print_Msg(int_pow(2, jagEepSize) * 128); // 128/256/512/1024/2048 BYTES print_Msg(int_pow(2, jagEepSize) * 128); // 128/256/512/1024/2048 BYTES
println_Msg(F(" B")); println_Msg(F(" B"));
} } else if (jagSaveType == 1) {
else if (jagSaveType == 1) {
print_Msg(F("FLASH: ")); print_Msg(F("FLASH: "));
print_Msg(jagflaSize / 1024); print_Msg(jagflaSize / 1024);
println_Msg(F(" KB")); println_Msg(F(" KB"));
@ -500,8 +495,7 @@ void shiftOutFAST(byte addr) { //
CLOCK_CLEAR; CLOCK_CLEAR;
if (addr & (1 << i)) { if (addr & (1 << i)) {
SER_SET; // 1 SER_SET; // 1
} } else {
else {
SER_CLEAR; // 0 SER_CLEAR; // 0
} }
CLOCK_SET; // shift bit CLOCK_SET; // shift bit
@ -532,7 +526,18 @@ void readJagData(unsigned long myAddress) {
PORTH &= ~(1 << 3) & ~(1 << 4); PORTH &= ~(1 << 3) & ~(1 << 4);
// Long delay here or there will be read errors // Long delay here or there will be read errors
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Read // Read
tempDataLO = (((PINK & 0xFF) << 8) | (PINF & 0xFF)); // D0-D15 [ROM U1] tempDataLO = (((PINK & 0xFF) << 8) | (PINF & 0xFF)); // D0-D15 [ROM U1]
@ -542,7 +547,12 @@ void readJagData(unsigned long myAddress) {
PORTH |= (1 << 3) | (1 << 4); PORTH |= (1 << 3) | (1 << 4);
// Setting CE(PH5) HIGH // Setting CE(PH5) HIGH
PORTH |= (1 << 5); PORTH |= (1 << 5);
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
SRCLR_CLEAR; SRCLR_CLEAR;
} }
@ -739,8 +749,7 @@ void EepromWriteData(void) {
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
if (((UPPER >> 7) & 0x1) == 1) { // Bit is HIGH if (((UPPER >> 7) & 0x1) == 1) { // Bit is HIGH
Eeprom1(); Eeprom1();
} } else { // Bit is LOW
else { // Bit is LOW
Eeprom0(); Eeprom0();
} }
// rotate to the next bit // rotate to the next bit
@ -749,8 +758,7 @@ void EepromWriteData(void) {
for (int j = 0; j < 8; j++) { for (int j = 0; j < 8; j++) {
if (((LOWER >> 7) & 0x1) == 1) { // Bit is HIGH if (((LOWER >> 7) & 0x1) == 1) { // Bit is HIGH
Eeprom1(); Eeprom1();
} } else { // Bit is LOW
else { // Bit is LOW
Eeprom0(); Eeprom0();
} }
// rotate to the next bit // rotate to the next bit
@ -763,8 +771,7 @@ void jagEepromSetAddress(uint16_t addr) { // 16bit
for (int i = 0; i < shiftaddr; i++) { for (int i = 0; i < shiftaddr; i++) {
if (((addr >> shiftaddr) & 1) == 1) { // Bit is HIGH if (((addr >> shiftaddr) & 1) == 1) { // Bit is HIGH
Eeprom1(); Eeprom1();
} } else { // Bit is LOW
else { // Bit is LOW
Eeprom0(); Eeprom0();
} }
// rotate to the next bit // rotate to the next bit
@ -800,7 +807,9 @@ void EepromEWEN(void) { // EWEN 10011xxxx
} }
EEP_CS_CLEAR; EEP_CS_CLEAR;
_delay_us(2); _delay_us(2);
#ifdef SERIAL_MONITOR
Serial.println(F("ERASE ENABLED")); Serial.println(F("ERASE ENABLED"));
#endif
} }
void EepromERAL(void) { // ERASE ALL 10010xxxx void EepromERAL(void) { // ERASE ALL 10010xxxx
@ -827,7 +836,9 @@ void EepromERAL(void) { // ERASE ALL 10010xxxx
} }
EEP_CS_CLEAR; EEP_CS_CLEAR;
jagEepromStatus(); jagEepromStatus();
#ifdef SERIAL_MONITOR
Serial.println(F("ERASED ALL")); Serial.println(F("ERASED ALL"));
#endif
} }
void EepromEWDS(void) { // DISABLE 10000xxxx void EepromEWDS(void) { // DISABLE 10000xxxx
@ -855,21 +866,24 @@ void EepromEWDS(void) { // DISABLE 10000xxxx
} }
EEP_CS_CLEAR; EEP_CS_CLEAR;
_delay_us(2); _delay_us(2);
#ifdef SERIAL_MONITOR
Serial.println(F("ERASE DISABLED")); Serial.println(F("ERASE DISABLED"));
#endif
} }
void jagEepromStatus(void) { // CHECK READY/BUSY void jagEepromStatus(void) { // CHECK READY/BUSY
__asm__("nop\n\t""nop\n\t"); // CS LOW for minimum 100ns __asm__("nop\n\t"
"nop\n\t"); // CS LOW for minimum 100ns
EEP_CS_SET; EEP_CS_SET;
boolean status = ((PINA & 0x20) >> 5); // Check DO boolean status = ((PINA & 0x20) >> 5); // Check DO
do { do {
_delay_ms(1); _delay_ms(1);
status = ((PINA & 0x20) >> 5); status = ((PINA & 0x20) >> 5);
} } while (!status); // status == 0 = BUSY
while (!status); // status == 0 = BUSY
EEP_CS_CLEAR; EEP_CS_CLEAR;
} }
#ifdef SERIAL_MONITOR
void EepromDisplay() { // FOR SERIAL ONLY void EepromDisplay() { // FOR SERIAL ONLY
word eepEnd = int_pow(2, jagEepSize) * 128; word eepEnd = int_pow(2, jagEepSize) * 128;
for (word address = 0; address < eepEnd; address += 2) { for (word address = 0; address < eepEnd; address += 2) {
@ -888,7 +902,7 @@ void EepromDisplay(){ // FOR SERIAL ONLY
Serial.println(F("")); Serial.println(F(""));
Serial.println(F("")); Serial.println(F(""));
} }
#endif
//***************************************************************************** //*****************************************************************************
// EEPROM // EEPROM
// (0) 93C46 128B STANDARD // (0) 93C46 128B STANDARD
@ -935,8 +949,7 @@ void readJagEEP() {
} }
myFile.write(sdBuffer, 512); myFile.write(sdBuffer, 512);
} }
} } else { // 93C46/93C56 - 64/128 WORDS
else { // 93C46/93C56 - 64/128 WORDS
for (word currWord = 0; currWord < eepEnd; currWord++) { for (word currWord = 0; currWord < eepEnd; currWord++) {
EepromRead(currWord * 2); EepromRead(currWord * 2);
sdBuffer[(currWord * 2)] = jagEepBuf[1]; sdBuffer[(currWord * 2)] = jagEepBuf[1];
@ -966,7 +979,9 @@ void writeJagEEP() {
if (myFile.open(filePath, O_READ)) { if (myFile.open(filePath, O_READ)) {
EepromEWEN(); // ERASE/WRITE ENABLE EepromEWEN(); // ERASE/WRITE ENABLE
EepromERAL(); // ERASE ALL EepromERAL(); // ERASE ALL
#ifdef SERIAL_MONITOR
Serial.println(F("WRITING")); Serial.println(F("WRITING"));
#endif
word eepEnd = int_pow(2, jagEepSize) * 64; // WORDS word eepEnd = int_pow(2, jagEepSize) * 64; // WORDS
if (jagEepSize > 1) { // 93C66/93C76/93C86 if (jagEepSize > 1) { // 93C66/93C76/93C86
for (word currWord = 0; currWord < eepEnd; currWord += 256) { for (word currWord = 0; currWord < eepEnd; currWord += 256) {
@ -977,8 +992,7 @@ void writeJagEEP() {
EepromWrite((currWord + i) * 2); EepromWrite((currWord + i) * 2);
} }
} }
} } else { // 93C46/93C56
else { // 93C46/93C56
myFile.read(sdBuffer, eepEnd * 2); myFile.read(sdBuffer, eepEnd * 2);
for (word currWord = 0; currWord < eepEnd; currWord++) { for (word currWord = 0; currWord < eepEnd; currWord++) {
jagEepBuf[0] = sdBuffer[currWord * 2]; jagEepBuf[0] = sdBuffer[currWord * 2];
@ -993,8 +1007,7 @@ void writeJagEEP() {
println_Msg(F("")); println_Msg(F(""));
println_Msg(F("DONE")); println_Msg(F("DONE"));
display_Update(); display_Update();
} } else {
else {
println_Msg(F("SD ERROR")); println_Msg(F("SD ERROR"));
println_Msg(F("Press Button to Reset")); println_Msg(F("Press Button to Reset"));
display_Update(); display_Update();
@ -1074,13 +1087,23 @@ void busyCheck() {
PORTH |= (1 << 5); PORTH |= (1 << 5);
// Leave CE high for at least 60ns // Leave CE high for at least 60ns
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Setting CE(PH5) LOW // Setting CE(PH5) LOW
PORTH &= ~(1 << 5); PORTH &= ~(1 << 5);
// Leave CE low for at least 50ns // Leave CE low for at least 50ns
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Read register // Read register
readBYTE_FLASH(0x0000); readBYTE_FLASH(0x0000);
@ -1100,7 +1123,12 @@ byte readBYTE_FLASH(unsigned long myAddress) {
LATCH_SET; LATCH_SET;
// Arduino running at 16Mhz -> one nop = 62.5ns // Arduino running at 16Mhz -> one nop = 62.5ns
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Setting CE(PH5) LOW // Setting CE(PH5) LOW
PORTH &= ~(1 << 5); PORTH &= ~(1 << 5);
@ -1109,7 +1137,18 @@ byte readBYTE_FLASH(unsigned long myAddress) {
// Setting OEL(PH4) LOW // Setting OEL(PH4) LOW
PORTH &= ~(1 << 4); PORTH &= ~(1 << 4);
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Read // Read
byte tempByte = PINL; // D16..D23 byte tempByte = PINL; // D16..D23
@ -1119,7 +1158,12 @@ byte readBYTE_FLASH(unsigned long myAddress) {
// Setting OEL(PH4) HIGH // Setting OEL(PH4) HIGH
PORTH |= (1 << 4); PORTH |= (1 << 4);
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
return tempByte; return tempByte;
} }
@ -1134,14 +1178,30 @@ byte readBYTE_MEMROM(unsigned long myAddress) {
LATCH_SET; LATCH_SET;
// Arduino running at 16Mhz -> one nop = 62.5ns // Arduino running at 16Mhz -> one nop = 62.5ns
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Setting CE(PH5) LOW // Setting CE(PH5) LOW
PORTH &= ~(1 << 5); PORTH &= ~(1 << 5);
// Setting OEH(PH3) LOW // Setting OEH(PH3) LOW
PORTH &= ~(1 << 3); PORTH &= ~(1 << 3);
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Read // Read
byte tempByte = PINF; // D0..D7 byte tempByte = PINF; // D0..D7
@ -1151,7 +1211,12 @@ byte readBYTE_MEMROM(unsigned long myAddress) {
// Setting OEH(PH3) HIGH // Setting OEH(PH3) HIGH
PORTH |= (1 << 3); PORTH |= (1 << 3);
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
return tempByte; return tempByte;
} }
@ -1167,7 +1232,12 @@ void writeBYTE_FLASH(unsigned long myAddress, byte myData) {
PORTL = myData; PORTL = myData;
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Setting OEL(PH4) HIGH // Setting OEL(PH4) HIGH
PORTH |= (1 << 4); PORTH |= (1 << 4);
@ -1202,7 +1272,12 @@ void writeSECTOR_FLASH(unsigned long myAddress) {
LATCH_SET; LATCH_SET;
PORTL = sdBuffer[i]; PORTL = sdBuffer[i];
__asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t"); __asm__("nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t"
"nop\n\t");
// Setting OEL(PH4) HIGH // Setting OEL(PH4) HIGH
// PORTH |= (1 << 4); // PORTH |= (1 << 4);
@ -1210,14 +1285,16 @@ void writeSECTOR_FLASH(unsigned long myAddress) {
PORTH &= ~(1 << 5); PORTH &= ~(1 << 5);
// Switch WE(PH6) LOW // Switch WE(PH6) LOW
PORTH &= ~(1 << 6); PORTH &= ~(1 << 6);
__asm__("nop\n\t""nop\n\t"); // Minimum 90ns __asm__("nop\n\t"
"nop\n\t"); // Minimum 90ns
// Switch WE(PH6) HIGH // Switch WE(PH6) HIGH
PORTH |= (1 << 6); PORTH |= (1 << 6);
// Setting CE(PH5) HIGH // Setting CE(PH5) HIGH
PORTH |= (1 << 5); PORTH |= (1 << 5);
__asm__("nop\n\t""nop\n\t"); // Minimum 100ns __asm__("nop\n\t"
"nop\n\t"); // Minimum 100ns
} }
delay(30); delay(30);
} }
@ -1283,7 +1360,6 @@ void readJagMEMORY() {
println_Msg(F("Press Button...")); println_Msg(F("Press Button..."));
wait(); wait();
} }
//***************************************************************************** //*****************************************************************************
@ -1384,8 +1460,7 @@ void writeJagFLASH() {
myFile.close(); myFile.close();
println_Msg(F("WRITE COMPLETE")); println_Msg(F("WRITE COMPLETE"));
display_Update(); display_Update();
} } else {
else {
println_Msg(F("SD ERROR")); println_Msg(F("SD ERROR"));
println_Msg(F("Press Button to Reset")); println_Msg(F("Press Button to Reset"));
display_Update(); display_Update();
@ -1418,8 +1493,7 @@ unsigned long verifyJagFLASH() {
} }
// Close the file: // Close the file:
myFile.close(); myFile.close();
} } else {
else {
println_Msg(F("SD ERROR")); println_Msg(F("SD ERROR"));
println_Msg(F("Press Button to Reset")); println_Msg(F("Press Button to Reset"));
display_Update(); display_Update();
@ -1459,7 +1533,6 @@ void writeConfirm() {
wait(); wait();
resetArduino(); resetArduino();
} }
} }
#endif #endif
//****************************************** //******************************************

View File

@ -105,7 +105,7 @@ byte ljprosize;
byte newljprosize; byte newljprosize;
char mnfID[3]; char mnfID[3];
char deviceID[5]; char deviceID_str[5];
boolean ljproflash1found = false; boolean ljproflash1found = false;
boolean ljproflash2found = false; boolean ljproflash2found = false;
byte ljproflash1size; byte ljproflash1size;
@ -346,18 +346,18 @@ void readID_U1() // Parallel Mode
CS1_HIGH; // U1 HIGH CS1_HIGH; // U1 HIGH
// Flash ID // Flash ID
sprintf(mnfID, "%02X", id0); sprintf(mnfID, "%02X", id0);
sprintf(deviceID, "%02X%02X", id1, id2); sprintf(deviceID_str, "%02X%02X", id1, id2);
// println_Msg(mnfID); // println_Msg(mnfID);
// println_Msg(deviceID); // println_Msg(deviceID_str);
// display_Update(); // display_Update();
if(strcmp(deviceID, "2015") == 0) { // MX25L1605 if(strcmp(deviceID_str, "2015") == 0) { // MX25L1605
ljproflash1found = 1; ljproflash1found = 1;
ljproflash1size = 2; ljproflash1size = 2;
display_Clear(); display_Clear();
println_Msg(F("U1 MX25L1605 FOUND")); println_Msg(F("U1 MX25L1605 FOUND"));
display_Update(); display_Update();
} }
else if (strcmp(deviceID, "2016") == 0) { // MX25L3205 else if (strcmp(deviceID_str, "2016") == 0) { // MX25L3205
ljproflash1found = 1; ljproflash1found = 1;
ljproflash1size = 4; ljproflash1size = 4;
display_Clear(); display_Clear();
@ -380,17 +380,17 @@ void readID_U2() // Parallel Mode
CS2_HIGH; // U2 HIGH CS2_HIGH; // U2 HIGH
// Flash ID // Flash ID
sprintf(mnfID, "%02X", id0); sprintf(mnfID, "%02X", id0);
sprintf(deviceID, "%02X%02X", id1, id2); sprintf(deviceID_str, "%02X%02X", id1, id2);
// println_Msg(mnfID); // println_Msg(mnfID);
// println_Msg(deviceID); // println_Msg(deviceID_str);
// display_Update(); // display_Update();
if(strcmp(deviceID, "2015") == 0) { // MX25L1605 if(strcmp(deviceID_str, "2015") == 0) { // MX25L1605
ljproflash2found = 1; ljproflash2found = 1;
ljproflash2size = 2; ljproflash2size = 2;
println_Msg(F("U2 MX25L1605 FOUND")); println_Msg(F("U2 MX25L1605 FOUND"));
display_Update(); display_Update();
} }
else if (strcmp(deviceID, "2016") == 0) { // MX25L3205 else if (strcmp(deviceID_str, "2016") == 0) { // MX25L3205
ljproflash2found = 1; ljproflash2found = 1;
ljproflash2size = 4; ljproflash2size = 4;
println_Msg(F("U2 MX25L3205 FOUND")); println_Msg(F("U2 MX25L3205 FOUND"));

View File

@ -76,10 +76,10 @@
#define NAND_1A_LOW PORTH &= ~(1 << 3) #define NAND_1A_LOW PORTH &= ~(1 << 3)
#define NAND_1B_HIGH PORTH |= (1 << 4) #define NAND_1B_HIGH PORTH |= (1 << 4)
#define NAND_1B_LOW PORTH &= ~(1 << 4) // Built-in RAM + I/O #define NAND_1B_LOW PORTH &= ~(1 << 4) // Built-in RAM + I/O
#define WE_HIGH PORTH |= (1 << 5) #define WE_HIGH_PCW PORTH |= (1 << 5)
#define WE_LOW PORTH &= ~(1 << 5) #define WE_LOW_PCW PORTH &= ~(1 << 5)
#define OE_HIGH PORTH |= (1 << 6) #define OE_HIGH_PCW PORTH |= (1 << 6)
#define OE_LOW PORTH &= ~(1 << 6) #define OE_LOW_PCW PORTH &= ~(1 << 6)
#define MODE_READ DDRC = 0 // [INPUT] #define MODE_READ DDRC = 0 // [INPUT]
#define MODE_WRITE DDRC = 0xFF //[OUTPUT] #define MODE_WRITE DDRC = 0xFF //[OUTPUT]
@ -207,8 +207,8 @@ void read_setup_PCW()
{ {
NAND_1A_HIGH; NAND_1A_HIGH;
NAND_1B_HIGH; NAND_1B_HIGH;
OE_HIGH; OE_HIGH_PCW;
WE_HIGH; WE_HIGH_PCW;
LE_LOW; LE_LOW;
} }
@ -226,11 +226,11 @@ unsigned char read_rom_byte_PCW(unsigned long address)
__asm__("nop\n\t" __asm__("nop\n\t"
"nop\n\t"); "nop\n\t");
// Read Data on AD0-AD7 // Read Data on AD0-AD7
OE_LOW; OE_LOW_PCW;
DATA_READ; DATA_READ;
delayMicroseconds(5); // 3+ Microseconds for Problem Carts delayMicroseconds(5); // 3+ Microseconds for Problem Carts
unsigned char data = PINC; unsigned char data = PINC;
OE_HIGH; OE_HIGH_PCW;
return data; return data;
} }
@ -254,7 +254,7 @@ unsigned char read_ram_byte_1A_PCW(unsigned long address)
"nop\n\t" "nop\n\t"
"nop\n\t"); "nop\n\t");
// Read Data on AD0-AD7 // Read Data on AD0-AD7
OE_LOW; OE_LOW_PCW;
DATA_READ; DATA_READ;
__asm__("nop\n\t" __asm__("nop\n\t"
"nop\n\t" "nop\n\t"
@ -263,7 +263,7 @@ unsigned char read_ram_byte_1A_PCW(unsigned long address)
"nop\n\t" "nop\n\t"
"nop\n\t"); "nop\n\t");
unsigned char data = PINC; unsigned char data = PINC;
OE_HIGH; OE_HIGH_PCW;
NAND_1A_HIGH; NAND_1A_HIGH;
__asm__("nop\n\t" __asm__("nop\n\t"
"nop\n\t" "nop\n\t"
@ -300,7 +300,7 @@ unsigned char read_ram_byte_1B_PCW(unsigned long address)
"nop\n\t" "nop\n\t"
"nop\n\t"); "nop\n\t");
// Read Data on AD0-AD7 // Read Data on AD0-AD7
OE_LOW; OE_LOW_PCW;
DATA_READ; DATA_READ;
__asm__("nop\n\t" __asm__("nop\n\t"
"nop\n\t" "nop\n\t"
@ -309,7 +309,7 @@ unsigned char read_ram_byte_1B_PCW(unsigned long address)
"nop\n\t" "nop\n\t"
"nop\n\t"); "nop\n\t");
unsigned char data = PINC; unsigned char data = PINC;
OE_HIGH; OE_HIGH_PCW;
NAND_1B_HIGH; NAND_1B_HIGH;
__asm__("nop\n\t" __asm__("nop\n\t"
"nop\n\t" "nop\n\t"
@ -333,13 +333,13 @@ void write_ram_byte_1A_PCW(unsigned long address, unsigned char data)
PORTC = address & 0xFF; // A0-A7 PORTC = address & 0xFF; // A0-A7
LE_LOW; // Address Latched LE_LOW; // Address Latched
// Write Data on AD0-AD7 - WE LOW ~240-248ns // Write Data on AD0-AD7 - WE LOW ~240-248ns
WE_LOW; WE_LOW_PCW;
PORTC = data; PORTC = data;
__asm__("nop\n\t" __asm__("nop\n\t"
"nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t"
"nop\n\t"); "nop\n\t");
WE_HIGH; WE_HIGH_PCW;
NAND_1A_HIGH; NAND_1A_HIGH;
} }
@ -358,7 +358,7 @@ void write_ram_byte_1B_PCW(unsigned long address, unsigned char data)
PORTC = address & 0xFF; // A0-A7 PORTC = address & 0xFF; // A0-A7
LE_LOW; // Address Latched LE_LOW; // Address Latched
// Write Data on AD0-AD7 - WE LOW ~740ns // Write Data on AD0-AD7 - WE LOW ~740ns
WE_LOW; WE_LOW_PCW;
PORTC = data; PORTC = data;
__asm__("nop\n\t" __asm__("nop\n\t"
"nop\n\t" "nop\n\t"
@ -370,7 +370,7 @@ void write_ram_byte_1B_PCW(unsigned long address, unsigned char data)
"nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t"
"nop\n\t"); "nop\n\t");
WE_HIGH; WE_HIGH_PCW;
NAND_1B_HIGH; NAND_1B_HIGH;
} }
@ -540,13 +540,13 @@ void write_bank_byte_PCW(unsigned char data)
PORTC = 0xFF; // A0-A7 PORTC = 0xFF; // A0-A7
LE_LOW; // Address Latched LE_LOW; // Address Latched
// Write Data on AD0-AD7 - WE LOW ~728-736ns // Write Data on AD0-AD7 - WE LOW ~728-736ns
WE_LOW; WE_LOW_PCW;
PORTC = data; PORTC = data;
for (unsigned int x = 0; x < 40; x++) for (unsigned int x = 0; x < 40; x++)
__asm__("nop\n\t"); __asm__("nop\n\t");
WE_HIGH; WE_HIGH_PCW;
NAND_1B_HIGH; NAND_1B_HIGH;
} }