From e768629009d0cc06a247a07b8f698419fe275bf8 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sat, 21 Feb 2015 12:40:36 -0800 Subject: [PATCH] SCP: Added the capability for EXAMINE command output to be written directly to a socket. --- ALTAIR/altair_sys.c | 5 ++++ AltairZ80/altairz80_sys.c | 5 ++++ BESM6/besm6_sys.c | 4 ++++ GRI/gri_sys.c | 5 ++++ H316/h316_sys.c | 5 ++++ HP2100/hp2100_sys.c | 5 ++++ I1401/i1401_sys.c | 5 ++++ I1620/i1620_sys.c | 5 ++++ I7094/i7094_sys.c | 5 ++++ Ibm1130/ibm1130_sys.c | 5 ++++ Interdata/id16_sys.c | 5 ++++ Interdata/id32_sys.c | 5 ++++ LGP/lgp_sys.c | 5 ++++ NOVA/nova_sys.c | 4 ++++ PDP1/pdp1_sys.c | 5 ++++ PDP10/pdp10_sys.c | 4 ++++ PDP11/pdp11_sys.c | 5 ++++ PDP18B/pdp18b_sys.c | 5 ++++ PDP8/pdp8_sys.c | 5 ++++ PDQ-3/pdq3_sys.c | 4 ++++ S3/s3_sys.c | 5 ++++ SAGE/m68k_sys.c | 5 ++++ SDS/sds_sys.c | 2 ++ SSEM/ssem_sys.c | 5 ++++ TX-0/tx0_sys_orig.c | 5 ++++ VAX/vax_sys.c | 5 ++++ VAX/vax_syscm.c | 5 ++++ alpha/alpha_sys.c | 5 ++++ scp.c | 49 +++++++++++++++++++++++++-------------- scp.h | 1 + sigma/sigma_sys.c | 5 ++++ sim_tmxr.c | 12 +++++++--- sim_tmxr.h | 1 + swtp6800/common/m6800.c | 4 ++++ 34 files changed, 185 insertions(+), 20 deletions(-) diff --git a/ALTAIR/altair_sys.c b/ALTAIR/altair_sys.c index 0453f8f7..3d423dd9 100644 --- a/ALTAIR/altair_sys.c +++ b/ALTAIR/altair_sys.c @@ -180,6 +180,11 @@ return (SCPE_OK); status = error code */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { diff --git a/AltairZ80/altairz80_sys.c b/AltairZ80/altairz80_sys.c index 95e4ce36..e0e5f0ae 100644 --- a/AltairZ80/altairz80_sys.c +++ b/AltairZ80/altairz80_sys.c @@ -488,6 +488,11 @@ static int32 DAsm(char *S, const uint32 *val, const int32 useZ80Mnemonics, const status = error code */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym(FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { char disasm_result[128]; int32 ch = val[0] & 0x7f; diff --git a/BESM6/besm6_sys.c b/BESM6/besm6_sys.c index 96251f97..95af78f9 100644 --- a/BESM6/besm6_sys.c +++ b/BESM6/besm6_sys.c @@ -418,6 +418,10 @@ t_stat parse_instruction_word (char *cptr, t_value *val) /* * Печать машинной инструкции с мнемоникой. */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) void besm6_fprint_cmd (FILE *of, uint32 cmd) { int reg, opcode, addr; diff --git a/GRI/gri_sys.c b/GRI/gri_sys.c index c20ab10b..5ef2c248 100644 --- a/GRI/gri_sys.c +++ b/GRI/gri_sys.c @@ -289,6 +289,11 @@ static const struct fnc_op fop[] = { /* Print opcode field for FO, SF */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + void fprint_op (FILE *of, uint32 inst, uint32 op) { int32 i, nfirst; diff --git a/H316/h316_sys.c b/H316/h316_sys.c index 26352c07..02ebe61e 100644 --- a/H316/h316_sys.c +++ b/H316/h316_sys.c @@ -214,6 +214,11 @@ static const int32 opc_val[] = { status = space needed */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + void fprint_opr (FILE *of, int32 inst, int32 class) { int32 i, j, sp; diff --git a/HP2100/hp2100_sys.c b/HP2100/hp2100_sys.c index 519b6e57..2a6f6807 100644 --- a/HP2100/hp2100_sys.c +++ b/HP2100/hp2100_sys.c @@ -430,6 +430,11 @@ static const int32 vtab[] = { #define FMTASC(x) ((x) < 040)? "<%03o>": "%c", (x) +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { diff --git a/I1401/i1401_sys.c b/I1401/i1401_sys.c index 11e45cb2..32dd496e 100644 --- a/I1401/i1401_sys.c +++ b/I1401/i1401_sys.c @@ -182,6 +182,11 @@ const char *opcode[64] = { /* Print an address from three characters */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + void fprint_addr (FILE *of, t_value *dig) { int32 addr, xa; diff --git a/I1620/i1620_sys.c b/I1620/i1620_sys.c index c25e9052..f7e8c7bb 100644 --- a/I1620/i1620_sys.c +++ b/I1620/i1620_sys.c @@ -279,6 +279,11 @@ struct opc opcode[] = { /* Print an address from five characters */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + void fprint_addr (FILE *of, int32 spc, t_value *dig, t_bool flg) { int32 i, idx; diff --git a/I7094/i7094_sys.c b/I7094/i7094_sys.c index 5aa432a6..c31069aa 100644 --- a/I7094/i7094_sys.c +++ b/I7094/i7094_sys.c @@ -590,6 +590,11 @@ static const t_uint64 opc_v[] = { return = status code */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { diff --git a/Ibm1130/ibm1130_sys.c b/Ibm1130/ibm1130_sys.c index 911149a4..64a358b2 100644 --- a/Ibm1130/ibm1130_sys.c +++ b/Ibm1130/ibm1130_sys.c @@ -289,6 +289,11 @@ static int ebcdic_to_ascii (int ch) return '?'; } +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { int32 ch, OP, F, TAG, INDIR, DSPLC, IR, eaddr; diff --git a/Interdata/id16_sys.c b/Interdata/id16_sys.c index 358cc666..35cd01f4 100644 --- a/Interdata/id16_sys.c +++ b/Interdata/id16_sys.c @@ -278,6 +278,11 @@ static const uint32 opc_val[] = { if < 0, number of extra bytes retired */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { diff --git a/Interdata/id32_sys.c b/Interdata/id32_sys.c index 288fd890..1f02bd23 100644 --- a/Interdata/id32_sys.c +++ b/Interdata/id32_sys.c @@ -300,6 +300,11 @@ static const uint32 opc_val[] = { /* Print an RX specifier */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_addr (FILE *of, t_addr addr, uint32 rx, uint32 ea1, uint32 ea2) { diff --git a/LGP/lgp_sys.c b/LGP/lgp_sys.c index d586f6b9..7dbca98e 100644 --- a/LGP/lgp_sys.c +++ b/LGP/lgp_sys.c @@ -222,6 +222,11 @@ static const char opcode[] = "ZBYRIDNMPEUTHCAS"; static const char hex_decode[] = "0123456789FGJKQW"; +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#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) { if ((dptr == sim_devices[0]) && diff --git a/NOVA/nova_sys.c b/NOVA/nova_sys.c index 104b992c..f11ed20e 100644 --- a/NOVA/nova_sys.c +++ b/NOVA/nova_sys.c @@ -637,6 +637,10 @@ static const int32 dev_val[] = { Outputs: return = error code */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) t_stat fprint_addr (FILE *of, t_addr addr, int32 ind, int32 mode, int32 disp, t_bool ext, int32 cflag) diff --git a/PDP1/pdp1_sys.c b/PDP1/pdp1_sys.c index 502aa0e2..3880c7af 100644 --- a/PDP1/pdp1_sys.c +++ b/PDP1/pdp1_sys.c @@ -414,6 +414,11 @@ static const int32 opc_val[] = { status = space needed? */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + int32 fprint_opr (FILE *of, int32 inst, int32 class, int32 sp) { int32 i, j; diff --git a/PDP10/pdp10_sys.c b/PDP10/pdp10_sys.c index cd8cdef9..6b93e238 100644 --- a/PDP10/pdp10_sys.c +++ b/PDP10/pdp10_sys.c @@ -696,6 +696,10 @@ static const char *devnam[NUMDEV] = { #define FMTASC(x) ((x) < 040)? "<%03o>": "%c", (x) #define SIXTOASC(x) ((x) + 040) +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) diff --git a/PDP11/pdp11_sys.c b/PDP11/pdp11_sys.c index 98126d67..c359477f 100644 --- a/PDP11/pdp11_sys.c +++ b/PDP11/pdp11_sys.c @@ -493,6 +493,11 @@ static const char r50_to_asc[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ$._0123456789"; count = -number of extra words retired */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + int32 fprint_spec (FILE *of, t_addr addr, int32 spec, t_value nval, int32 flag, int32 iflag) { diff --git a/PDP18B/pdp18b_sys.c b/PDP18B/pdp18b_sys.c index 239af0a0..ecb10bb8 100644 --- a/PDP18B/pdp18b_sys.c +++ b/PDP18B/pdp18b_sys.c @@ -880,6 +880,11 @@ static const int32 opc_val[] = { status = space needed? */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + int32 fprint_opr (FILE *of, int32 inst, int32 class, int32 sp) { int32 i, j; diff --git a/PDP8/pdp8_sys.c b/PDP8/pdp8_sys.c index ef308605..0b45873d 100644 --- a/PDP8/pdp8_sys.c +++ b/PDP8/pdp8_sys.c @@ -524,6 +524,11 @@ static const int32 fop_val[] = { status = space needed */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + int32 fprint_opr (FILE *of, int32 inst, int32 class, int32 sp) { int32 i, j; diff --git a/PDQ-3/pdq3_sys.c b/PDQ-3/pdq3_sys.c index a7aca9df..7962da09 100644 --- a/PDQ-3/pdq3_sys.c +++ b/PDQ-3/pdq3_sys.c @@ -137,6 +137,10 @@ t_stat sim_load (FILE *fi, char *cptr, char *fnam, int flag) * The t_addr type must be 32 bit, the upper half contains the segment, the lower * half contains the offset. If the upper half is NIL, it is a word address */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) void pdq3_fprint_addr (FILE *st, DEVICE *dptr, t_addr addr) { if (ADDR_ISWORD(addr)) diff --git a/S3/s3_sys.c b/S3/s3_sys.c index f9205864..08cd00e4 100644 --- a/S3/s3_sys.c +++ b/S3/s3_sys.c @@ -252,6 +252,11 @@ return (SCPE_OK); status = error code */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { diff --git a/SAGE/m68k_sys.c b/SAGE/m68k_sys.c index 3f07a829..a2d9ca5f 100644 --- a/SAGE/m68k_sys.c +++ b/SAGE/m68k_sys.c @@ -301,6 +301,11 @@ const char *sim_stop_messages[] = { #define DATA_B(x) (x&0xff) #define DATA_W(x) (x&0xffff) +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + static t_stat _fsymea(FILE* of,t_addr addr,int ea, int oplen,t_value* rest) { int eamod = EAMOD_FIELD(ea); diff --git a/SDS/sds_sys.c b/SDS/sds_sys.c index 8d216a80..e1ddc261 100644 --- a/SDS/sds_sys.c +++ b/SDS/sds_sys.c @@ -473,6 +473,8 @@ static const char *chname[] = { inst = mask bits */ +#define fprintf Fprintf /* Use scp.c provided fprintf function */ + void fprint_reg (FILE *of, int32 inst) { int32 i, j, sp; diff --git a/SSEM/ssem_sys.c b/SSEM/ssem_sys.c index eaac3e6a..1e08c4e3 100644 --- a/SSEM/ssem_sys.c +++ b/SSEM/ssem_sys.c @@ -117,6 +117,11 @@ if (flag == 1) return ssem_dump(fi); return ssem_load_dmp(fi); } +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + /* Utility routine - prints number in decimal */ t_stat ssem_fprint_decimal (FILE *of, uint32 inst) diff --git a/TX-0/tx0_sys_orig.c b/TX-0/tx0_sys_orig.c index a85c9d32..812b24cd 100644 --- a/TX-0/tx0_sys_orig.c +++ b/TX-0/tx0_sys_orig.c @@ -98,6 +98,11 @@ const OPMAP opmap_orig [] = { { 0000000, NULL, NULL } }; +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym_orig (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { diff --git a/VAX/vax_sys.c b/VAX/vax_sys.c index cd05067e..554e3c2a 100644 --- a/VAX/vax_sys.c +++ b/VAX/vax_sys.c @@ -729,6 +729,11 @@ const char* regname[] = { if < 0, number of extra bytes retired */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr exta, t_value *val, UNIT *uptr, int32 sw) { diff --git a/VAX/vax_syscm.c b/VAX/vax_syscm.c index 7c7328d1..b4242901 100644 --- a/VAX/vax_syscm.c +++ b/VAX/vax_syscm.c @@ -202,6 +202,11 @@ static const char r50_to_asc[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ$._0123456789"; count = -number of extra words retired */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + int32 fprint_spec (FILE *of, t_addr addr, int32 spec, int32 nval) { int32 reg, mode; diff --git a/alpha/alpha_sys.c b/alpha/alpha_sys.c index c3e4c8a4..580a3ca6 100644 --- a/alpha/alpha_sys.c +++ b/alpha/alpha_sys.c @@ -494,6 +494,11 @@ const uint32 opval[] = { if < 0, number of extra bytes retired */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { diff --git a/scp.c b/scp.c index b22298e7..84b34980 100644 --- a/scp.c +++ b/scp.c @@ -462,6 +462,7 @@ UNIT *sim_clock_queue = QUEUE_LIST_END; int32 sim_interval = 0; int32 sim_switches = 0; FILE *sim_ofile = NULL; +TMLN *sim_oline = NULL; SCHTAB *sim_schrptr = FALSE; SCHTAB *sim_schaptr = FALSE; DEVICE *sim_dfdev = NULL; @@ -6266,7 +6267,7 @@ for (rptr = lowr; rptr <= highr; rptr++) { return reason; } else - fprintf (ofile, "%s[%d]-%s[%d]: same as above\n", rptr->name, val_start+1, rptr->name, idx-1); + Fprintf (ofile, "%s[%d]-%s[%d]: same as above\n", rptr->name, val_start+1, rptr->name, idx-1); } last_val = val; val_start = idx; @@ -6289,7 +6290,7 @@ for (rptr = lowr; rptr <= highr; rptr++) { return reason; } else - fprintf (ofile, "%s[%d]-%s[%d]: same as above\n", rptr->name, val_start+1, rptr->name, highs); + Fprintf (ofile, "%s[%d]-%s[%d]: same as above\n", rptr->name, val_start+1, rptr->name, highs); } } return SCPE_OK; @@ -6351,8 +6352,8 @@ int32 rdx; if (rptr == NULL) return SCPE_IERR; if (rptr->depth > 1) - fprintf (ofile, "%s[%d]:\t", rptr->name, idx); -else fprintf (ofile, "%s:\t", rptr->name); + Fprintf (ofile, "%s[%d]:\t", rptr->name, idx); +else Fprintf (ofile, "%s:\t", rptr->name); if (!(flag & EX_E)) return SCPE_OK; GET_RADIX (rdx, rptr->radix); @@ -6362,13 +6363,13 @@ else if (!(rptr->flags & REG_VMIO) || (fprint_sym (ofile, rdx, &val, NULL, sim_switches | SIM_SW_REG) > 0)) { fprint_val (ofile, val, rdx, rptr->width, rptr->flags & REG_FMT); if (rptr->fields) { - fprintf (ofile, "\t"); + Fprintf (ofile, "\t"); fprint_fields (ofile, val, val, rptr->fields); } } if (flag & EX_I) - fprintf (ofile, "\t"); -else fprintf (ofile, "\n"); + Fprintf (ofile, "\t"); +else Fprintf (ofile, "\n"); return SCPE_OK; } @@ -6552,7 +6553,7 @@ int32 rdx; if (sim_vm_fprint_addr) sim_vm_fprint_addr (ofile, dptr, addr); else fprint_val (ofile, addr, dptr->aradix, dptr->awidth, PV_LEFT); -fprintf (ofile, ":\t"); +Fprintf (ofile, ":\t"); if (!(flag & EX_E)) return (1 - dptr->aincr); @@ -6562,8 +6563,8 @@ if ((reason = fprint_sym (ofile, addr, sim_eval, uptr, sim_switches)) > 0) { reason = 1 - dptr->aincr; } if (flag & EX_I) - fprintf (ofile, "\t"); -else fprintf (ofile, "\n"); + Fprintf (ofile, "\t"); +else Fprintf (ofile, "\n"); return reason; } @@ -8044,7 +8045,7 @@ if (!stream) if (width > MAX_WIDTH) width = MAX_WIDTH; sprint_val (dbuf, val, radix, width, format); -if (fputs (dbuf, stream) == EOF) +if (Fprintf (stream, "%s", dbuf) < 0) return SCPE_IOERR; return SCPE_OK; } @@ -9445,7 +9446,7 @@ for (i = fields-1; i >= 0; i--) { /* print xlation, transition continue; if ((bitdefs[i].width == 1) && (bitdefs[i].valuenames == NULL)) { int off = ((after >> bitdefs[i].offset) & 1) + (((before ^ after) >> bitdefs[i].offset) & 1) * 2; - fprintf(stream, "%s%c ", bitdefs[i].name, debug_bstates[off]); + Fprintf(stream, "%s%c ", bitdefs[i].name, debug_bstates[off]); } else { const char *delta = ""; @@ -9458,15 +9459,15 @@ for (i = fields-1; i >= 0; i--) { /* print xlation, transition if (value > beforevalue) delta = "^"; if (bitdefs[i].valuenames) - fprintf(stream, "%s=%s%s ", bitdefs[i].name, delta, bitdefs[i].valuenames[value]); + Fprintf(stream, "%s=%s%s ", bitdefs[i].name, delta, bitdefs[i].valuenames[value]); else if (bitdefs[i].format) { - fprintf(stream, "%s=%s", bitdefs[i].name, delta); - fprintf(stream, bitdefs[i].format, value); - fprintf(stream, " "); + Fprintf(stream, "%s=%s", bitdefs[i].name, delta); + Fprintf(stream, bitdefs[i].format, value); + Fprintf(stream, " "); } else - fprintf(stream, "%s=%s0x%X ", bitdefs[i].name, delta, value); + Fprintf(stream, "%s=%s0x%X ", bitdefs[i].name, delta, value); } } } @@ -9772,6 +9773,20 @@ if (sim_deb && (dptr->dctrl & reason)) { } } +int Fprintf (FILE *f, const char* fmt, ...) +{ +int ret = 0; +va_list args; + +va_start (args, fmt); +if (sim_oline) + tmxr_linemsgvf (sim_oline, fmt, args); +else + ret = vfprintf (f, fmt, args); +va_end (args); +return ret; +} + /* Hierarchical help presentation * diff --git a/scp.h b/scp.h index e1f479d7..7c3ff0f9 100644 --- a/scp.h +++ b/scp.h @@ -143,6 +143,7 @@ t_stat sim_decode_quoted_string (const char *iptr, uint8 *optr, uint32 *osize); char *sim_encode_quoted_string (const uint8 *iptr, uint32 size); void fprint_buffer_string (FILE *st, const uint8 *buf, uint32 size); t_value strtotv (const char *cptr, const char **endptr, uint32 radix); +int Fprintf (FILE *f, const char* fmt, ...); t_stat fprint_val (FILE *stream, t_value val, uint32 rdx, uint32 wid, uint32 fmt); t_stat sim_print_val (t_value val, uint32 radix, uint32 width, uint32 format); char *read_line (char *cptr, int32 size, FILE *stream); diff --git a/sigma/sigma_sys.c b/sigma/sigma_sys.c index 53aeb6dd..f70e1b72 100644 --- a/sigma/sigma_sys.c +++ b/sigma/sigma_sys.c @@ -337,6 +337,11 @@ static const char *opcode[] = { return = status code */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) + t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) { diff --git a/sim_tmxr.c b/sim_tmxr.c index 389f2d16..a44d635c 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -3850,15 +3850,22 @@ return; void tmxr_linemsgf (TMLN *lp, const char *fmt, ...) { +va_list arglist; + +va_start (arglist, fmt); +tmxr_linemsgvf (lp, fmt, arglist); +va_end (arglist); +} + +void tmxr_linemsgvf (TMLN *lp, const char *fmt, va_list arglist) +{ char stackbuf[STACKBUFSIZE]; int32 bufsize = sizeof(stackbuf); char *buf = stackbuf; -va_list arglist; int32 i, len; buf[bufsize-1] = '\0'; while (1) { /* format passed string, args */ - va_start (arglist, fmt); #if defined(NO_vsnprintf) #if defined(HAS_vsprintf_void) @@ -3880,7 +3887,6 @@ while (1) { /* format passed string, arg len = vsnprintf (buf, bufsize-1, fmt, arglist); #endif /* HAS_vsnprintf_void */ #endif /* NO_vsnprintf */ - va_end (arglist); /* If the formatted result didn't fit into the buffer, then grow the buffer and try again */ diff --git a/sim_tmxr.h b/sim_tmxr.h index 9d795331..ff4c1921 100644 --- a/sim_tmxr.h +++ b/sim_tmxr.h @@ -224,6 +224,7 @@ t_stat tmxr_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw); void tmxr_msg (SOCKET sock, const char *msg); void tmxr_linemsg (TMLN *lp, const char *msg); void tmxr_linemsgf (TMLN *lp, const char *fmt, ...); +void tmxr_linemsgvf (TMLN *lp, const char *fmt, va_list args); void tmxr_fconns (FILE *st, TMLN *lp, int32 ln); void tmxr_fstats (FILE *st, TMLN *lp, int32 ln); t_stat tmxr_set_log (UNIT *uptr, int32 val, char *cptr, void *desc); diff --git a/swtp6800/common/m6800.c b/swtp6800/common/m6800.c index 8559670d..39e18dac 100644 --- a/swtp6800/common/m6800.c +++ b/swtp6800/common/m6800.c @@ -1949,6 +1949,10 @@ t_stat sim_load (FILE *fileref, char *cptr, char *fnam, int flag) status = error code for M6800 */ +/* Use scp.c provided fprintf function */ +#define fprintf Fprintf +#define fputs(_s,f) Fprintf(f,"%s",_s) +#define fputc(_c,f) Fprintf(f,"%c",_c) t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, UNIT *uptr, int32 sw) {