comparison sms.c @ 1129:6b5c92b6205c

Enabled Z80 debugger in PBC mode
author Michael Pavone <pavone@retrodev.com>
date Wed, 28 Dec 2016 12:28:52 -0800
parents 63cd87d910cc
children 8f14767661fa
comparison
equal deleted inserted replaced
1128:093c19f34dfd 1129:6b5c92b6205c
3 #include <stddef.h> 3 #include <stddef.h>
4 #include "sms.h" 4 #include "sms.h"
5 #include "blastem.h" 5 #include "blastem.h"
6 #include "render.h" 6 #include "render.h"
7 #include "util.h" 7 #include "util.h"
8 #include "debug.h"
8 9
9 static void *memory_io_write(uint32_t location, void *vcontext, uint8_t value) 10 static void *memory_io_write(uint32_t location, void *vcontext, uint8_t value)
10 { 11 {
11 z80_context *z80 = vcontext; 12 z80_context *z80 = vcontext;
12 sms_context *sms = z80->system; 13 sms_context *sms = z80->system;
117 render_disable_ym(); 118 render_disable_ym();
118 sms_context *sms = (sms_context *)system; 119 sms_context *sms = (sms_context *)system;
119 uint32_t target_cycle = sms->z80->current_cycle + 3420*262; 120 uint32_t target_cycle = sms->z80->current_cycle + 3420*262;
120 while (!sms->should_return) 121 while (!sms->should_return)
121 { 122 {
123 if (system->enter_debugger && sms->z80->pc) {
124 system->enter_debugger = 0;
125 zdebugger(sms->z80, sms->z80->pc);
126 }
122 z80_run(sms->z80, target_cycle); 127 z80_run(sms->z80, target_cycle);
123 target_cycle = sms->z80->current_cycle; 128 target_cycle = sms->z80->current_cycle;
124 vdp_run_context(sms->vdp, target_cycle); 129 vdp_run_context(sms->vdp, target_cycle);
125 psg_run(sms->psg, target_cycle); 130 psg_run(sms->psg, target_cycle);
126 target_cycle += 3420*262; 131 target_cycle += 3420*262;
140 145
141 static void start_sms(system_header *system, char *statefile) 146 static void start_sms(system_header *system, char *statefile)
142 { 147 {
143 sms_context *sms = (sms_context *)system; 148 sms_context *sms = (sms_context *)system;
144 set_keybindings(&sms->io); 149 set_keybindings(&sms->io);
150
151 if (system->enter_debugger) {
152 system->enter_debugger = 0;
153 zinsert_breakpoint(sms->z80, 0, (uint8_t *)zdebugger);
154 }
145 155
146 z80_assert_reset(sms->z80, 0); 156 z80_assert_reset(sms->z80, 0);
147 z80_clear_reset(sms->z80, 128*15); 157 z80_clear_reset(sms->z80, 128*15);
148 158
149 run_sms(system); 159 run_sms(system);