1
0
mirror of https://github.com/pevans/erc-c.git synced 2024-12-30 06:29:48 +00:00

Add dblock command to disassemble blocks of code

This commit is contained in:
Peter Evans 2018-03-01 19:31:56 -06:00
parent 0315eb33bf
commit b239cac239
3 changed files with 25 additions and 0 deletions

View File

@ -78,6 +78,7 @@ extern void vm_debug_unbreak(int);
extern void vm_debug_unbreak_all();
extern DEBUG_CMD(break);
extern DEBUG_CMD(dblock);
extern DEBUG_CMD(disasm);
extern DEBUG_CMD(help);
extern DEBUG_CMD(jump);

View File

@ -11,6 +11,7 @@
#include "apple2.h"
#include "mos6502.h"
#include "mos6502.dis.h"
#include "vm_debug.h"
#include "vm_di.h"
#include "vm_reflect.h"
@ -34,6 +35,8 @@ static bool breakpoints[BREAKPOINTS_MAX];
vm_debug_cmd cmdtable[] = {
{ "break", "b", vm_debug_cmd_break, 1, "<addr>",
"Add breakpoint at <addr>", },
{ "dblock", "db", vm_debug_cmd_dblock, 2, "<from> <to>",
"Disassemble a block of code", },
{ "disasm", "d", vm_debug_cmd_disasm, 0, "",
"Toggle disassembly", },
{ "help", "h", vm_debug_cmd_help, 0, "",
@ -428,3 +431,15 @@ DEBUG_CMD(disasm)
fprintf(stream, "disassembly %s\n", mach->disasm ? "ON" : "OFF");
}
DEBUG_CMD(dblock)
{
if (args->addr1 > args->addr2) {
return;
}
mos6502 *cpu = (mos6502 *)vm_di_get(VM_CPU);
FILE *stream = (FILE *)vm_di_get(VM_OUTPUT);
mos6502_dis_scan(cpu, stream, args->addr1, args->addr2);
}

View File

@ -278,3 +278,12 @@ Test(vm_debug, cmd_disassemble)
vm_debug_cmd_disasm(&args);
cr_assert_eq(mach->disasm, false);
}
Test(vm_debug, cmd_dblock)
{
mos6502_set(mach->cpu, 0, 0xEA);
args.addr1 = 0;
args.addr2 = 1;
vm_debug_cmd_dblock(&args);
cr_assert_neq(strlen(buf), 0);
}