Mercurial > repos > blastem
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); |