SCP: Added a mechanism to allow debugging output to display PC values for simulators which don't have a simple register which contains the PC value.
This commit is contained in:
parent
949aa30bef
commit
600d6f5962
2 changed files with 10 additions and 1 deletions
10
scp.c
10
scp.c
|
@ -342,6 +342,7 @@ void (*sim_vm_post) (t_bool from_scp) = NULL;
|
||||||
CTAB *sim_vm_cmd = NULL;
|
CTAB *sim_vm_cmd = NULL;
|
||||||
void (*sim_vm_fprint_addr) (FILE *st, DEVICE *dptr, t_addr addr) = NULL;
|
void (*sim_vm_fprint_addr) (FILE *st, DEVICE *dptr, t_addr addr) = NULL;
|
||||||
t_addr (*sim_vm_parse_addr) (DEVICE *dptr, char *cptr, char **tptr) = NULL;
|
t_addr (*sim_vm_parse_addr) (DEVICE *dptr, char *cptr, char **tptr) = NULL;
|
||||||
|
t_value (*sim_vm_pc_value) (void) = NULL;
|
||||||
|
|
||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
|
|
||||||
|
@ -1474,6 +1475,8 @@ t_stat echo_cmd (int32 flag, char *cptr)
|
||||||
puts (cptr);
|
puts (cptr);
|
||||||
if (sim_log)
|
if (sim_log)
|
||||||
fprintf (sim_log, "%s\n", cptr);
|
fprintf (sim_log, "%s\n", cptr);
|
||||||
|
if (sim_deb)
|
||||||
|
fprintf (sim_deb, "\n%s\n", cptr);
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6934,7 +6937,12 @@ if (sim_deb_switches & SWMASK ('A')) {
|
||||||
sprintf(tim_t, "%lld.%03d ", (long long)(time_now.tv_sec), (int)(time_now.tv_nsec/1000000));
|
sprintf(tim_t, "%lld.%03d ", (long long)(time_now.tv_sec), (int)(time_now.tv_nsec/1000000));
|
||||||
}
|
}
|
||||||
if (sim_deb_switches & SWMASK ('P')) {
|
if (sim_deb_switches & SWMASK ('P')) {
|
||||||
t_value val = get_rval (sim_deb_PC, 0);
|
t_value val;
|
||||||
|
|
||||||
|
if (sim_vm_pc_value)
|
||||||
|
val = (*sim_vm_pc_value)();
|
||||||
|
else
|
||||||
|
val = get_rval (sim_deb_PC, 0);
|
||||||
sprintf(pc_s, "-%s:", sim_deb_PC->name);
|
sprintf(pc_s, "-%s:", sim_deb_PC->name);
|
||||||
sprint_val (&pc_s[strlen(pc_s)], val, sim_deb_PC->radix, sim_deb_PC->width, sim_deb_PC->flags & REG_FMT);
|
sprint_val (&pc_s[strlen(pc_s)], val, sim_deb_PC->radix, sim_deb_PC->width, sim_deb_PC->flags & REG_FMT);
|
||||||
}
|
}
|
||||||
|
|
1
scp.h
1
scp.h
|
@ -201,6 +201,7 @@ extern void (*sim_vm_post) (t_bool from_scp);
|
||||||
extern CTAB *sim_vm_cmd;
|
extern CTAB *sim_vm_cmd;
|
||||||
extern void (*sim_vm_fprint_addr) (FILE *st, DEVICE *dptr, t_addr addr);
|
extern void (*sim_vm_fprint_addr) (FILE *st, DEVICE *dptr, t_addr addr);
|
||||||
extern t_addr (*sim_vm_parse_addr) (DEVICE *dptr, char *cptr, char **tptr);
|
extern t_addr (*sim_vm_parse_addr) (DEVICE *dptr, char *cptr, char **tptr);
|
||||||
|
extern t_value (*sim_vm_pc_value) (void);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue