Adjusting presentation of Memory and CPU windows
This commit is contained in:
+23
-23
@@ -9,16 +9,16 @@
|
||||
|
||||
// Create and initialize a new simulation
|
||||
EMSCRIPTEN_KEEPALIVE VB* Create() {
|
||||
VB *vb = malloc(sizeof (VB));
|
||||
vbInit(vb);
|
||||
return vb;
|
||||
VB *sim = malloc(sizeof (VB));
|
||||
vbInit(sim);
|
||||
return sim;
|
||||
}
|
||||
|
||||
// Delete all memory used by a simulation
|
||||
EMSCRIPTEN_KEEPALIVE void Delete(VB *vb) {
|
||||
free(vb->cart.ram);
|
||||
free(vb->cart.rom);
|
||||
free(vb);
|
||||
EMSCRIPTEN_KEEPALIVE void Delete(VB *sim) {
|
||||
free(sim->cart.ram);
|
||||
free(sim->cart.rom);
|
||||
free(sim);
|
||||
}
|
||||
|
||||
// Proxy for free()
|
||||
@@ -42,26 +42,26 @@ EMSCRIPTEN_KEEPALIVE int PointerSize() {
|
||||
|
||||
// Execute until the following instruction
|
||||
static uint32_t RunNextAddress;
|
||||
static int RunNextFetch(VB *vb, int fetch, VBAccess *access) {
|
||||
static int RunNextFetch(VB *sim, int fetch, VBAccess *access) {
|
||||
return access->address == RunNextAddress;
|
||||
}
|
||||
static int RunNextExecute(VB *vb, VBInstruction *inst) {
|
||||
static int RunNextExecute(VB *sim, VBInstruction *inst) {
|
||||
RunNextAddress = inst->address + inst->size;
|
||||
vbSetCallback(vb, VB_ONEXECUTE, NULL);
|
||||
vbSetCallback(vb, VB_ONFETCH, &RunNextFetch);
|
||||
vbSetCallback(sim, VB_ONEXECUTE, NULL);
|
||||
vbSetCallback(sim, VB_ONFETCH, &RunNextFetch);
|
||||
return 0;
|
||||
}
|
||||
EMSCRIPTEN_KEEPALIVE void RunNext(VB **vbs, int count) {
|
||||
EMSCRIPTEN_KEEPALIVE void RunNext(VB **sims, int count) {
|
||||
uint32_t clocks = 20000000; // 1s
|
||||
vbSetCallback(vbs[0], VB_ONEXECUTE, &RunNextExecute);
|
||||
vbEmulateEx (vbs, count, &clocks);
|
||||
vbSetCallback(vbs[0], VB_ONEXECUTE, NULL);
|
||||
vbSetCallback(vbs[0], VB_ONFETCH , NULL);
|
||||
vbSetCallback(sims[0], VB_ONEXECUTE, &RunNextExecute);
|
||||
vbEmulateEx (sims, count, &clocks);
|
||||
vbSetCallback(sims[0], VB_ONEXECUTE, NULL);
|
||||
vbSetCallback(sims[0], VB_ONFETCH , NULL);
|
||||
}
|
||||
|
||||
// Execute the current instruction
|
||||
static int SingleStepBreak;
|
||||
static int SingleStepFetch(VB *vb, int fetch, VBAccess *access) {
|
||||
static int SingleStepFetch(VB *sim, int fetch, VBAccess *access) {
|
||||
if (fetch != 0)
|
||||
return 0;
|
||||
if (SingleStepBreak == 1)
|
||||
@@ -69,11 +69,11 @@ static int SingleStepFetch(VB *vb, int fetch, VBAccess *access) {
|
||||
SingleStepBreak = 1;
|
||||
return 0;
|
||||
}
|
||||
EMSCRIPTEN_KEEPALIVE void SingleStep(VB **vbs, int count) {
|
||||
EMSCRIPTEN_KEEPALIVE void SingleStep(VB **sims, int count) {
|
||||
uint32_t clocks = 20000000; // 1s
|
||||
SingleStepBreak = vbs[0]->cpu.stage == 0 ? 0 : 1;
|
||||
vbSetCallback(vbs[0], VB_ONFETCH, &SingleStepFetch);
|
||||
vbEmulateEx (vbs, count, &clocks);
|
||||
vbSetCallback(vbs[0], VB_ONEXECUTE, NULL);
|
||||
vbSetCallback(vbs[0], VB_ONFETCH , NULL);
|
||||
SingleStepBreak = sims[0]->cpu.stage == 0 ? 0 : 1;
|
||||
vbSetCallback(sims[0], VB_ONFETCH, &SingleStepFetch);
|
||||
vbEmulateEx (sims, count, &clocks);
|
||||
vbSetCallback(sims[0], VB_ONEXECUTE, NULL);
|
||||
vbSetCallback(sims[0], VB_ONFETCH , NULL);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user