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

01: diff -ur nspire_emu_026/apb.c nspire_emu_026_for_os_2.1/apb.c
02: --- nspire_emu_026/apb.c        2010-03-06 11:02:12.000000000 +0100
03: +++ nspire_emu_026_for_os_2.1/apb.c     2010-07-15 22:35:49.524645400 +0200
04: @@ -378,6 +378,7 @@
05:                 case 0x0: return 0;
06:                 case 0x4: return 9; // Number of halfwords starting at +10
07:                 case 0x8: return 2;
08: +               case 0xc: return 2;
09:         }
10:         return bad_read_word(addr);
11:  }
12: @@ -392,6 +393,7 @@
13:                 case 0x0: return;
14:                 case 0x4: return;
15:                 case 0x8: return;
16: +               case 0xc: return;
17:         }
18:         bad_write_word(addr, value);
19:  }
20: @@ -405,8 +407,10 @@
21:  }
22:  u32 unknown_900F_read_word(u32 addr) {
23:         switch (addr & 0xFFFF) {
24: +               case 0x08: return 0;
25:                 case 0x0C: return 0;
26:                 case 0x10: return 0;
27: +               case 0x14: return 2;
28:         }
29:         return bad_read_word(addr);
30:  }
31: @@ -418,7 +422,9 @@
32:  }
33:  void unknown_900F_write_word(u32 addr, u32 value) {
34:         switch (addr & 0xFFFF) {
35: +               case 0x04: return;
36:                 case 0x0C: return;
37: +               case 0x14: return;
38:                 case 0x20: return;
39:         }
40:         bad_write_word(addr, value);
41: diff -ur nspire_emu_026/memory.c nspire_emu_026_for_os_2.1/memory.c
42: --- nspire_emu_026/memory.c     2010-03-06 10:58:56.000000000 +0100
43: +++ nspire_emu_026_for_os_2.1/memory.c  2010-07-15 23:24:37.259020400 +0200
44: @@ -110,6 +110,24 @@
45:         bad_write_word(addr, value);
46:  }
47:  
48: +/* A9000000 */
49: +u32 unknown_A9_read_word(u32 addr) {
50: +       switch (addr & 0xFFFFFF) {
51: +               case 0x10: return 1;
52: +               case 0x1c: return 0;
53: +               case 0x20: return 0;
54: +       }
55: +       return bad_read_word(addr);
56: +}
57: +void unknown_A9_write_word(u32 addr, u32 value) {
58: +       switch (addr & 0xFFFFFF) {
59: +               case 0x0C: return;
60: +               case 0x1C: return;
61: +               case 0x20: return;
62: +       }
63: +       bad_write_word(addr, value);
64: +}
65: +
66:  /* AC000000 */
67:  u8 unknown_AC_read_byte(u32 addr) {
68:         switch (addr & 0x3FFFFFF) {
69: @@ -143,8 +161,10 @@
70:                 // returning 0 causes OS 1.1 to detect a "probe" (?)
71:                 // and hang trying to communicate with it
72:                 case 0x1A4: return -1;
73: +               case 0x1AC: return 0;
74:                 case 0x1B0: return 0;
75:                 case 0x1B4: return 0;
76: +               case 0x1BC: return 0;
77:                 case 0x1C0: return 0;
78:         }
79:         return bad_read_word(addr);
80: @@ -163,6 +183,7 @@
81:                 case 0x1A8: return;
82:                 case 0x1AC: return;
83:                 case 0x1B4: return;
84: +               case 0x1BC: return;
85:                 case 0x1C0: return;
86:         }
87:         bad_write_word(addr, value);
88: @@ -423,6 +444,9 @@
89:         write_byte_map[0xA4 >> 2] = memory_write_byte;
90:         write_half_map[0xA4 >> 2] = memory_write_half;
91:         write_word_map[0xA4 >> 2] = memory_write_word;
92: +      
93: +       read_word_map[0xA9 >> 2] = unknown_A9_read_word;
94: +       write_word_map[0xA9 >> 2] = unknown_A9_write_word;
95:  
96:         read_byte_map[0xAC >> 2] = unknown_AC_read_byte;
97: