Relaxed HELP dev REGISTERS to now also list registers for devices which don't have register descriptions yet.
This commit is contained in:
parent
08e97d5882
commit
a5413ab20c
1 changed files with 33 additions and 43 deletions
32
scp.c
32
scp.c
|
@ -1029,14 +1029,8 @@ for (i = 0; (dptr = sim_devices[i]) != NULL; i++) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dptr->registers) {
|
if (dptr->registers) {
|
||||||
REG *rptr;
|
if (dptr->registers->name != NULL)
|
||||||
|
|
||||||
for (rptr = dptr->registers; rptr->name != NULL; rptr++) {
|
|
||||||
if (rptr->desc) {
|
|
||||||
fprintf (st, "h{elp} %s REGISTERS\t type help for device %s register variables\n", dptr->name, dptr->name);
|
fprintf (st, "h{elp} %s REGISTERS\t type help for device %s register variables\n", dptr->name, dptr->name);
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -1060,45 +1054,46 @@ char *tptr;
|
||||||
char *namebuf;
|
char *namebuf;
|
||||||
char rangebuf[32];
|
char rangebuf[32];
|
||||||
|
|
||||||
|
if (dptr->registers)
|
||||||
for (rptr = dptr->registers; rptr->name != NULL; rptr++) {
|
for (rptr = dptr->registers; rptr->name != NULL; rptr++) {
|
||||||
|
if (rptr->flags & REG_HIDDEN)
|
||||||
|
continue;
|
||||||
if (rptr->depth > 1)
|
if (rptr->depth > 1)
|
||||||
sprintf (rangebuf, "[%d:%d]", 0, rptr->depth-1);
|
sprintf (rangebuf, "[%d:%d]", 0, rptr->depth-1);
|
||||||
else
|
else
|
||||||
strcpy (rangebuf, "");
|
strcpy (rangebuf, "");
|
||||||
if (max_namelen < (strlen(rptr->name) + strlen (rangebuf)))
|
if (max_namelen < (strlen(rptr->name) + strlen (rangebuf)))
|
||||||
max_namelen = strlen(rptr->name) + strlen (rangebuf);
|
max_namelen = strlen(rptr->name) + strlen (rangebuf);
|
||||||
if (rptr->desc) {
|
|
||||||
found = TRUE;
|
found = TRUE;
|
||||||
trptr = find_reg_glob (rptr->name, &tptr, &tdptr);
|
trptr = find_reg_glob (rptr->name, &tptr, &tdptr);
|
||||||
if ((trptr == NULL) || (tdptr != dptr))
|
if ((trptr == NULL) || (tdptr != dptr))
|
||||||
all_unique = FALSE;
|
all_unique = FALSE;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!found) {
|
if (!found) {
|
||||||
if (!silent)
|
if (!silent)
|
||||||
fprintf (st, "No register help is available for the %s device\n", dptr->name);
|
fprintf (st, "No register help is available for the %s device\n", dptr->name);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
namebuf = calloc (max_namelen + 1, sizeof (*namebuf));
|
namebuf = calloc (max_namelen + 2, sizeof (*namebuf));
|
||||||
fprintf (st, "\nThe %s device implements these registers:\n\n", dptr->name);
|
fprintf (st, "\nThe %s device implements these registers:\n\n", dptr->name);
|
||||||
for (rptr = dptr->registers; rptr->name != NULL; rptr++) {
|
for (rptr = dptr->registers; rptr->name != NULL; rptr++) {
|
||||||
if (rptr->desc) {
|
|
||||||
if (rptr->depth <= 1)
|
if (rptr->depth <= 1)
|
||||||
sprintf (namebuf, "%*s", -((int)max_namelen), rptr->name);
|
sprintf (namebuf, "%*s", -((int)max_namelen), rptr->name);
|
||||||
else {
|
else {
|
||||||
sprintf (rangebuf, "[%d:%d]", 0, rptr->depth-1);
|
sprintf (rangebuf, "[%d:%d]", 0, rptr->depth-1);
|
||||||
sprintf (namebuf, "%s%*s", rptr->name, (int)(strlen(rptr->name))-((int)max_namelen), rangebuf);
|
sprintf (namebuf, "%s%*s", rptr->name, (int)(strlen(rptr->name))-((int)max_namelen), rangebuf);
|
||||||
}
|
}
|
||||||
|
if (rptr->flags & REG_HIDDEN)
|
||||||
|
continue;
|
||||||
if (all_unique) {
|
if (all_unique) {
|
||||||
fprintf (st, " %s %4d %s\n", namebuf, rptr->width, rptr->desc);
|
fprintf (st, " %s %4d %s\n", namebuf, rptr->width, rptr->desc ? rptr->desc : "");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
trptr = find_reg_glob (rptr->name, &tptr, &tdptr);
|
trptr = find_reg_glob (rptr->name, &tptr, &tdptr);
|
||||||
if ((trptr == NULL) || (tdptr != dptr))
|
if ((trptr == NULL) || (tdptr != dptr))
|
||||||
fprintf (st, " %s %s %4d %s\n", dptr->name, namebuf, rptr->width, rptr->desc);
|
fprintf (st, " %s %s %4d %s\n", dptr->name, namebuf, rptr->width, rptr->desc ? rptr->desc : "");
|
||||||
else
|
else
|
||||||
fprintf (st, " %*s %s %4d %s\n", (int)strlen(dptr->name), "", namebuf, rptr->width, rptr->desc);
|
fprintf (st, " %*s %s %4d %s\n", (int)strlen(dptr->name), "", namebuf, rptr->width, rptr->desc ? rptr->desc : "");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
free (namebuf);
|
free (namebuf);
|
||||||
}
|
}
|
||||||
|
@ -1346,15 +1341,10 @@ if (*cptr) {
|
||||||
fprintf (sim_log, "h{elp} %s ATTACH\t type help for device %s ATTACH command\n", dptr->name, dptr->name);
|
fprintf (sim_log, "h{elp} %s ATTACH\t type help for device %s ATTACH command\n", dptr->name, dptr->name);
|
||||||
}
|
}
|
||||||
if (dptr->registers) {
|
if (dptr->registers) {
|
||||||
REG *rptr;
|
if (dptr->registers->name != NULL) {
|
||||||
|
|
||||||
for (rptr = dptr->registers; rptr->name != NULL; rptr++) {
|
|
||||||
if (rptr->desc) {
|
|
||||||
fprintf (stdout, "h{elp} %s REGISTERS\t type help for device %s register variables\n", dptr->name, dptr->name);
|
fprintf (stdout, "h{elp} %s REGISTERS\t type help for device %s register variables\n", dptr->name, dptr->name);
|
||||||
if (sim_log)
|
if (sim_log)
|
||||||
fprintf (sim_log, "h{elp} %s REGISTERS\t type help for device %s register variables\n", dptr->name, dptr->name);
|
fprintf (sim_log, "h{elp} %s REGISTERS\t type help for device %s register variables\n", dptr->name, dptr->name);
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dptr->modifiers) {
|
if (dptr->modifiers) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue