SCP, PDP11: Added HELP CPU BREAK to display info about breakpoint types
This commit is contained in:
parent
d4f38d5358
commit
cf1e7b9cca
3 changed files with 52 additions and 10 deletions
|
@ -657,15 +657,6 @@ MTAB cpu_mod[] = {
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
DEVICE cpu_dev = {
|
|
||||||
"CPU", &cpu_unit, cpu_reg, cpu_mod,
|
|
||||||
1, 8, 22, 2, 8, 16,
|
|
||||||
&cpu_ex, &cpu_dep, &cpu_reset,
|
|
||||||
NULL, NULL, NULL,
|
|
||||||
NULL, DEV_DYNM, 0,
|
|
||||||
NULL, &cpu_set_size, NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
BRKTYPTAB cpu_breakpoints [] = {
|
BRKTYPTAB cpu_breakpoints [] = {
|
||||||
BRKTYPE('E',"Execute Instruction at Virtual Address"),
|
BRKTYPE('E',"Execute Instruction at Virtual Address"),
|
||||||
BRKTYPE('P',"Execute Instruction at Physical Address"),
|
BRKTYPE('P',"Execute Instruction at Physical Address"),
|
||||||
|
@ -676,6 +667,17 @@ BRKTYPTAB cpu_breakpoints [] = {
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
DEVICE cpu_dev = {
|
||||||
|
"CPU", &cpu_unit, cpu_reg, cpu_mod,
|
||||||
|
1, 8, 22, 2, 8, 16,
|
||||||
|
&cpu_ex, &cpu_dep, &cpu_reset,
|
||||||
|
NULL, NULL, NULL,
|
||||||
|
NULL, DEV_DYNM, 0,
|
||||||
|
NULL, &cpu_set_size, NULL,
|
||||||
|
NULL, NULL, NULL, NULL,
|
||||||
|
cpu_breakpoints
|
||||||
|
};
|
||||||
|
|
||||||
t_value pdp11_pc_value (void)
|
t_value pdp11_pc_value (void)
|
||||||
{
|
{
|
||||||
return (t_value)PC;
|
return (t_value)PC;
|
||||||
|
|
39
scp.c
39
scp.c
|
@ -2434,6 +2434,40 @@ void fprint_show_help (FILE *st, DEVICE *dptr)
|
||||||
fprint_show_help_ex (st, dptr, TRUE);
|
fprint_show_help_ex (st, dptr, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fprint_brk_help_ex (FILE *st, DEVICE *dptr, t_bool silent)
|
||||||
|
{
|
||||||
|
BRKTYPTAB *brkt = dptr->brk_types;
|
||||||
|
char gbuf[CBUFSIZE];
|
||||||
|
|
||||||
|
if (sim_brk_types == 0) {
|
||||||
|
if (!silent) {
|
||||||
|
fprintf (st, "Breakpoints are not supported in the %s simulator\n", sim_name);
|
||||||
|
if (dptr->help)
|
||||||
|
dptr->help (st, dptr, NULL, 0, NULL);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (brkt == NULL) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (sim_brk_types & ~sim_brk_dflt) {
|
||||||
|
fprintf (st, "%s supports the following breakpoint types:\n", sim_dname (dptr));
|
||||||
|
for (i=0; i<26; i++) {
|
||||||
|
if (sim_brk_types & (1<<i))
|
||||||
|
fprintf (st, " -%c\n", 'A'+i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fprintf (st, "The default breakpoint type is: %s\n", put_switches (gbuf, sizeof(gbuf), sim_brk_dflt));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fprintf (st, "%s supports the following breakpoint types:\n", sim_dname (dptr));
|
||||||
|
while (brkt->btyp) {
|
||||||
|
fprintf (st, " %s %s\n", put_switches (gbuf, sizeof(gbuf), brkt->btyp), brkt->desc);
|
||||||
|
++brkt;
|
||||||
|
}
|
||||||
|
fprintf (st, "The default breakpoint type is: %s\n", put_switches (gbuf, sizeof(gbuf), sim_brk_dflt));
|
||||||
|
}
|
||||||
|
|
||||||
t_stat help_dev_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr)
|
t_stat help_dev_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, const char *cptr)
|
||||||
{
|
{
|
||||||
char gbuf[CBUFSIZE];
|
char gbuf[CBUFSIZE];
|
||||||
|
@ -2461,6 +2495,10 @@ if (*cptr) {
|
||||||
fprint_attach_help_ex (st, dptr, FALSE);
|
fprint_attach_help_ex (st, dptr, FALSE);
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
if (cmdp->action == &brk_cmd) {
|
||||||
|
fprint_brk_help_ex (st, dptr, FALSE);
|
||||||
|
return SCPE_OK;
|
||||||
|
}
|
||||||
if (dptr->help)
|
if (dptr->help)
|
||||||
return dptr->help (st, dptr, uptr, flag, cptr);
|
return dptr->help (st, dptr, uptr, flag, cptr);
|
||||||
fprintf (st, "No %s help is available for the %s device\n", cmdp->name, dptr->name);
|
fprintf (st, "No %s help is available for the %s device\n", cmdp->name, dptr->name);
|
||||||
|
@ -2486,6 +2524,7 @@ fprint_set_help_ex (st, dptr, TRUE);
|
||||||
fprint_show_help_ex (st, dptr, TRUE);
|
fprint_show_help_ex (st, dptr, TRUE);
|
||||||
fprint_attach_help_ex (st, dptr, TRUE);
|
fprint_attach_help_ex (st, dptr, TRUE);
|
||||||
fprint_reg_help_ex (st, dptr, TRUE);
|
fprint_reg_help_ex (st, dptr, TRUE);
|
||||||
|
fprint_brk_help_ex (st, dptr, TRUE);
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -467,6 +467,7 @@ struct DEVICE {
|
||||||
/* attach help */
|
/* attach help */
|
||||||
void *help_ctx; /* Context available to help routines */
|
void *help_ctx; /* Context available to help routines */
|
||||||
const char *(*description)(DEVICE *dptr); /* Device Description */
|
const char *(*description)(DEVICE *dptr); /* Device Description */
|
||||||
|
BRKTYPTAB *brk_types; /* Breakpoint types */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Device flags */
|
/* Device flags */
|
||||||
|
|
Loading…
Add table
Reference in a new issue