comparison gdb_remote.c @ 1752:d6d4c006a7b3

Initial attempt at interrupts in new Z80 core and integrating it into main executable
author Michael Pavone <pavone@retrodev.com>
date Sun, 10 Feb 2019 11:58:23 -0800
parents 85a90964b557
children 8fe162bdb038 52a47611a273
comparison
equal deleted inserted replaced
1751:c5d4e1d14dac 1752:d6d4c006a7b3
130 context->flags[i] = value & 1; 130 context->flags[i] = value & 1;
131 value >>= 1; 131 value >>= 1;
132 } 132 }
133 } 133 }
134 134
135 uint8_t read_byte(m68k_context * context, uint32_t address) 135 uint8_t m68k_read_byte(m68k_context * context, uint32_t address)
136 { 136 {
137 137
138 genesis_context *gen = context->system; 138 genesis_context *gen = context->system;
139 //TODO: Use generated read/write functions to support access to hardware that is not ROM or RAM 139 //TODO: Use generated read/write functions to support access to hardware that is not ROM or RAM
140 uint16_t * word = get_native_pointer(address & 0xFFFFFFFE, (void **)context->mem_pointers, &context->options->gen); 140 uint16_t * word = get_native_pointer(address & 0xFFFFFFFE, (void **)context->mem_pointers, &context->options->gen);
148 return gen->zram[address & 0x1FFF]; 148 return gen->zram[address & 0x1FFF];
149 } 149 }
150 return 0; 150 return 0;
151 } 151 }
152 152
153 void write_byte(m68k_context * context, uint32_t address, uint8_t value) 153 void m68k_write_byte(m68k_context * context, uint32_t address, uint8_t value)
154 { 154 {
155 genesis_context *gen = context->system; 155 genesis_context *gen = context->system;
156 //TODO: Use generated read/write functions so that memory map is properly respected 156 //TODO: Use generated read/write functions so that memory map is properly respected
157 uint16_t * word = get_native_pointer(address & 0xFFFFFFFE, (void **)context->mem_pointers, &context->options->gen); 157 uint16_t * word = get_native_pointer(address & 0xFFFFFFFE, (void **)context->mem_pointers, &context->options->gen);
158 if (word) { 158 if (word) {
168 return; 168 return;
169 } 169 }
170 if (address >= 0xA00000 && address < 0xA04000) { 170 if (address >= 0xA00000 && address < 0xA04000) {
171 gen->zram[address & 0x1FFF] = value; 171 gen->zram[address & 0x1FFF] = value;
172 genesis_context * gen = context->system; 172 genesis_context * gen = context->system;
173 #ifndef NO_Z80 173 #if !defined(NO_Z80) && !defined(NEW_CORE)
174 z80_handle_code_write(address & 0x1FFF, gen->z80); 174 z80_handle_code_write(address & 0x1FFF, gen->z80);
175 #endif 175 #endif
176 return; 176 return;
177 } else { 177 } else {
178 return; 178 return;
303 size = (sizeof(send_buf)-1)/2; 303 size = (sizeof(send_buf)-1)/2;
304 } 304 }
305 char *cur = send_buf; 305 char *cur = send_buf;
306 while (size) 306 while (size)
307 { 307 {
308 hex_8(read_byte(context, address), cur); 308 hex_8(m68k_read_byte(context, address), cur);
309 cur += 2; 309 cur += 2;
310 address++; 310 address++;
311 size--; 311 size--;
312 } 312 }
313 *cur = 0; 313 *cur = 0;
324 { 324 {
325 char tmp[3]; 325 char tmp[3];
326 tmp[0] = *(cur++); 326 tmp[0] = *(cur++);
327 tmp[1] = *(cur++); 327 tmp[1] = *(cur++);
328 tmp[2] = 0; 328 tmp[2] = 0;
329 write_byte(context, address, strtoul(tmp, NULL, 16)); 329 m68k_write_byte(context, address, strtoul(tmp, NULL, 16));
330 address++; 330 address++;
331 size--; 331 size--;
332 } 332 }
333 gdb_send_command("OK"); 333 gdb_send_command("OK");
334 break; 334 break;