File: nspire_emu_026_for_os_2.1.patch - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

diff -ur nspire_emu_026/apb.c nspire_emu_026_for_os_2.1/apb.c
--- nspire_emu_026/apb.c    2010-03-06 11:02:12.000000000 +0100
+++ nspire_emu_026_for_os_2.1/apb.c 2010-07-15 22:35:49.524645400 +0200
@@ -378,6 +378,7 @@
        case 0x0: return 0;
        case 0x4: return 9; // Number of halfwords starting at +10
        case 0x8: return 2;
+       case 0xc: return 2;
    }
    return bad_read_word(addr);
 }
@@ -392,6 +393,7 @@
        case 0x0: return;
        case 0x4: return;
        case 0x8: return;
+       case 0xc: return;
    }
    bad_write_word(addr, value);
 }
@@ -405,8 +407,10 @@
 }
 u32 unknown_900F_read_word(u32 addr) {
    switch (addr & 0xFFFF) {
+       case 0x08: return 0;
        case 0x0C: return 0;
        case 0x10: return 0;
+       case 0x14: return 2;
    }
    return bad_read_word(addr);
 }
@@ -418,7 +422,9 @@
 }
 void unknown_900F_write_word(u32 addr, u32 value) {
    switch (addr & 0xFFFF) {
+       case 0x04: return;
        case 0x0C: return;
+       case 0x14: return;
        case 0x20: return;
    }
    bad_write_word(addr, value);
diff -ur nspire_emu_026/memory.c nspire_emu_026_for_os_2.1/memory.c
--- nspire_emu_026/memory.c 2010-03-06 10:58:56.000000000 +0100
+++ nspire_emu_026_for_os_2.1/memory.c  2010-07-15 23:24:37.259020400 +0200
@@ -110,6 +110,24 @@
    bad_write_word(addr, value);
 }
 
+/* A9000000 */
+u32 unknown_A9_read_word(u32 addr) {
+   switch (addr & 0xFFFFFF) {
+       case 0x10: return 1;
+       case 0x1c: return 0;
+       case 0x20: return 0;
+   }
+   return bad_read_word(addr);
+}
+void unknown_A9_write_word(u32 addr, u32 value) {
+   switch (addr & 0xFFFFFF) {
+       case 0x0C: return;
+       case 0x1C: return;
+       case 0x20: return;
+   }
+   bad_write_word(addr, value);
+}
+
 /* AC000000 */
 u8 unknown_AC_read_byte(u32 addr) {
    switch (addr & 0x3FFFFFF) {
@@ -143,8 +161,10 @@
        // returning 0 causes OS 1.1 to detect a "probe" (?)
        // and hang trying to communicate with it
        case 0x1A4: return -1;
+       case 0x1AC: return 0;
        case 0x1B0: return 0;
        case 0x1B4: return 0;
+       case 0x1BC: return 0;
        case 0x1C0: return 0;
    }
    return bad_read_word(addr);
@@ -163,6 +183,7 @@
        case 0x1A8: return;
        case 0x1AC: return;
        case 0x1B4: return;
+       case 0x1BC: return;
        case 0x1C0: return;
    }
    bad_write_word(addr, value);
@@ -423,6 +444,9 @@
    write_byte_map[0xA4 >> 2] = memory_write_byte;
    write_half_map[0xA4 >> 2] = memory_write_half;
    write_word_map[0xA4 >> 2] = memory_write_word;
+  
+   read_word_map[0xA9 >> 2] = unknown_A9_read_word;
+   write_word_map[0xA9 >> 2] = unknown_A9_write_word;
 
    read_byte_map[0xAC >> 2] = unknown_AC_read_byte;