LGP, CDC1700, PDQ3: Add new VM optional sim_vm_sprint_addr API
This commit is contained in:
parent
222ae77436
commit
41ba04e88a
3 changed files with 43 additions and 16 deletions
|
@ -124,7 +124,7 @@ static void postUpdate(t_bool from_scp)
|
|||
/*
|
||||
* Special address print routine for "Relative" display.
|
||||
*/
|
||||
static void printAddress(FILE *st, DEVICE *dptr, t_addr addr)
|
||||
static void sprintAddress(char *buf, DEVICE *dptr, t_addr addr)
|
||||
{
|
||||
if ((dptr == sim_devices[0]) && ((sim_switches & SWMASK('R')) != 0)) {
|
||||
if (!RelValid) {
|
||||
|
@ -133,7 +133,15 @@ static void printAddress(FILE *st, DEVICE *dptr, t_addr addr)
|
|||
}
|
||||
addr -= RelBase;
|
||||
}
|
||||
fprint_val(st, addr, dptr->aradix, dptr->awidth, PV_RZRO);
|
||||
sprint_val(buf, addr, dptr->aradix, dptr->awidth, PV_RZRO);
|
||||
}
|
||||
|
||||
static void printAddress(FILE *st, DEVICE *dptr, t_addr addr)
|
||||
{
|
||||
char buf[64];
|
||||
|
||||
sprintAddress(buf, dptr, addr);
|
||||
fprintf (st, "%s", buf);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -141,6 +149,7 @@ static void printAddress(FILE *st, DEVICE *dptr, t_addr addr)
|
|||
*/
|
||||
static void VMinit(void)
|
||||
{
|
||||
sim_vm_sprint_addr = &sprintAddress;
|
||||
sim_vm_fprint_addr = &printAddress;
|
||||
sim_vm_post = &postUpdate;
|
||||
sim_vm_cmd = cdc1700_cmd;
|
||||
|
|
|
@ -226,14 +226,21 @@ static const char hex_decode[] = "0123456789FGJKQW";
|
|||
#define fputs(_s,f) Fprintf(f,"%s",_s)
|
||||
#define fputc(_c,f) Fprintf(f,"%c",_c)
|
||||
|
||||
void lgp_fprint_addr (FILE *st, DEVICE *dptr, t_addr addr)
|
||||
void lgp_sprint_addr (char *buf, DEVICE *dptr, t_addr addr)
|
||||
{
|
||||
if ((dptr == sim_devices[0]) &&
|
||||
((sim_switches & SWMASK ('T')) ||
|
||||
((cpu_unit.flags & UNIT_TTSS_D) && !(sim_switches & SWMASK ('N')))))
|
||||
fprintf (st, "%02d%02d", addr >> 6, addr & SCMASK_30);
|
||||
else fprint_val (st, addr, dptr->aradix, dptr->awidth, PV_LEFT);
|
||||
return;
|
||||
sprintf (buf, "%02d%02d", addr >> 6, addr & SCMASK_30);
|
||||
else sprint_val (buf, addr, dptr->aradix, dptr->awidth, PV_LEFT);
|
||||
}
|
||||
|
||||
void lgp_fprint_addr (FILE *st, DEVICE *dptr, t_addr addr)
|
||||
{
|
||||
char buf[64];
|
||||
|
||||
lgp_sprint_addr (buf, dptr, addr);
|
||||
fprintf (st, "%s", buf);
|
||||
}
|
||||
|
||||
t_addr lgp_parse_addr (DEVICE *dptr, CONST char *cptr, CONST char **tptr)
|
||||
|
@ -256,6 +263,7 @@ return ea;
|
|||
|
||||
void lgp_vm_init (void)
|
||||
{
|
||||
sim_vm_sprint_addr = &lgp_sprint_addr;
|
||||
sim_vm_fprint_addr = &lgp_fprint_addr;
|
||||
sim_vm_parse_addr = &lgp_parse_addr;
|
||||
return;
|
||||
|
|
|
@ -141,18 +141,27 @@ t_stat sim_load (FILE *fi, CONST char *cptr, CONST char *fnam, int flag)
|
|||
#define fprintf Fprintf
|
||||
#define fputs(_s,f) Fprintf(f,"%s",_s)
|
||||
#define fputc(_c,f) Fprintf(f,"%c",_c)
|
||||
void pdq3_sprint_addr (char *buf, DEVICE *dptr, t_addr addr)
|
||||
{
|
||||
*buf = '\0';
|
||||
if (ADDR_ISWORD(addr))
|
||||
sprintf(buf,"$");
|
||||
else if (ADDR_SEG(addr) == reg_segb)
|
||||
sprintf(&buf[strlen(buf)],"#");
|
||||
else {
|
||||
sprint_val (&buf[strlen(buf)], ADDR_SEG(addr), dptr->dradix, dptr->dwidth, PV_LEFT);
|
||||
sprintf(&buf[strlen(buf)],":");
|
||||
}
|
||||
sprint_val (&buf[strlen(buf)], ADDR_OFF(addr), dptr->dradix, dptr->dwidth, PV_LEFT);
|
||||
return;
|
||||
}
|
||||
|
||||
void pdq3_fprint_addr (FILE *st, DEVICE *dptr, t_addr addr)
|
||||
{
|
||||
if (ADDR_ISWORD(addr))
|
||||
fprintf(st,"$");
|
||||
else if (ADDR_SEG(addr) == reg_segb)
|
||||
fprintf(st,"#");
|
||||
else {
|
||||
fprint_val (st, ADDR_SEG(addr), dptr->dradix, dptr->dwidth, PV_LEFT);
|
||||
fprintf(st,":");
|
||||
}
|
||||
fprint_val (st, ADDR_OFF(addr), dptr->dradix, dptr->dwidth, PV_LEFT);
|
||||
return;
|
||||
char buf[65];
|
||||
|
||||
pdq3_sprint_addr (buf, dptr, addr);
|
||||
fprintf(st,"%s", buf);
|
||||
}
|
||||
|
||||
t_addr pdq3_parse_addr (DEVICE *dptr, CONST char *cptr, CONST char **tptr)
|
||||
|
@ -182,6 +191,7 @@ t_addr pdq3_parse_addr (DEVICE *dptr, CONST char *cptr, CONST char **tptr)
|
|||
|
||||
void pdq3_vm_init (void)
|
||||
{
|
||||
sim_vm_sprint_addr = &pdq3_sprint_addr;
|
||||
sim_vm_fprint_addr = &pdq3_fprint_addr;
|
||||
sim_vm_parse_addr = &pdq3_parse_addr;
|
||||
sim_vm_cmd = pdq3_cmds;
|
||||
|
|
Loading…
Add table
Reference in a new issue