diff --git a/bin/GWRAM.dbg.po b/bin/GWRAM.dbg.po index be1d2a3..0c4a1b2 100644 Binary files a/bin/GWRAM.dbg.po and b/bin/GWRAM.dbg.po differ diff --git a/bin/GWRAM.po b/bin/GWRAM.po index 28ae968..b2cd446 100644 Binary files a/bin/GWRAM.po and b/bin/GWRAM.po differ diff --git a/ram2gs.c b/ram2gs.c index 21e399e..ca1d0a0 100644 --- a/ram2gs.c +++ b/ram2gs.c @@ -9,14 +9,11 @@ #include "gwconio.h" #include "ram2gs_asm.h" -// Commands common to Altera and AGM +static void ram2gs_erase() { ram2gs_cmd(0x28); } +static void ram2gs_program() { ram2gs_cmd(0x24); } static void ram2gs_set4mb() { ram2gs_cmd(0x10); } static void ram2gs_set8mb() { ram2gs_cmd(0x11); } - -// Commands for just altera -static void ram2gs_altera_erase() { ram2gs_cmd(0x28); } -static void ram2gs_altera_program() { ram2gs_cmd(0x24); } -static void ram2gs_altera_setnvm(char en8meg) { +static void ram2gs_setnvm(char en8meg) { char i; // Clock in 0 to enable this setting entry ram2gs_cmd(0x20); @@ -38,44 +35,7 @@ static void ram2gs_altera_setnvm(char en8meg) { ram2gs_cmd(0x23); } - ram2gs_altera_program(); -} - -// Commands for just AGM -static void ram2gs_agm_select() { ram2gs_cmd(0x34); } -static void ram2gs_agm_deselect() { ram2gs_cmd(0x30); } -static void ram2gs_agm_tx8(char data) { - char i; - for (i = 0; i < 8; i++) { - ram2gs_cmd(0x34 + ((data >> (7-i)) & 1)); - ram2gs_cmd(0x36 + ((data >> (7-i)) & 1)); - } -} -static void ram2gs_agm_write_en() { - ram2gs_agm_deselect(); - ram2gs_agm_select(); - ram2gs_agm_tx8(0x06); // 0x06 is write enable - ram2gs_agm_deselect(); -} -static void ram2gs_agm_erase() { - ram2gs_agm_write_en(); - ram2gs_agm_select(); - ram2gs_agm_tx8(0x20); // 0x20 is sector erase (4 kB) - ram2gs_agm_tx8(0x00); // address[23:16] - ram2gs_agm_tx8(0x10); // address[15:8] - ram2gs_agm_tx8(0x00); // address[7:0] - ram2gs_agm_deselect(); -} -static void ram2gs_agm_write_nvm(char en8meg) { - ram2gs_agm_write_en(); - ram2gs_agm_select(); - ram2gs_agm_tx8(0x02); // 0x02 is page (byte) program - ram2gs_agm_tx8(0x00); // address[23:16] - ram2gs_agm_tx8(0x10); // address[15:8] - ram2gs_agm_tx8(0x00); // address[7:0] - if (en8meg) { ram2gs_agm_tx8(0xFF); } // data[7:0] - else { ram2gs_agm_tx8(0x00); } // data[7:0] - ram2gs_agm_deselect(); + ram2gs_program(); } static void menu(void) @@ -142,11 +102,11 @@ int ram2gs_main(void) gwcputsxy(1, 8, "Resetting RAM2GS settings."); gwcputsxy(1, 9, "Do not turn off your Apple."); - // Erase RAM2GS settings memory - ram2gs_altera_erase(); // Erase for Altera CPLD - ram2gs_agm_erase(); // Erase for AGM CPLD - spin(32, 8); // Wait for >= 500ms on even the fastest systems. - ram2gs_set8mb(); // Enable 8 megabytes now (default) + ram2gs_erase(); // Erase RAM2GS settings memory + ram2gs_set8mb(); // Enable 8 megabytes now + + // Wait for >= 500ms on even the fastest systems. + spin(32, 8); // Show success message and quit clrscr(); // Clear screen @@ -170,10 +130,9 @@ int ram2gs_main(void) gwcputsxy(1, 8, "Saving RAM2GS capacity setting."); gwcputsxy(1, 9, "Do not turn off your Apple."); // Save capacity in nonvolatile memory. - ram2gs_altera_setnvm(en8meg); // Save for Altera CPLD - ram2gs_agm_erase(); // Erase for AGM CPLD - spin(33, 8); // Wait for >= 500ms on even the fastest systems. - ram2gs_agm_write_nvm(en8meg); // Write for AGM CPLD + ram2gs_setnvm(en8meg); + // Wait for >= 500ms on even the fastest systems. + spin(33, 8); // Print success message clrscr(); // Clear screen gwcputsxy(1, 8, "RAM2GS capacity saved successfully.");