From 69666f1480d494c225a1e82b8b38568792948382 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Wed, 31 Oct 2012 10:09:04 -0700 Subject: [PATCH] Fixed message reporting after command completion: scp.c,scp.h - Gave priority to a command message handler to determine what values result in displayed messages and exported run_cmd_message for use by simulators which add simulator specific BOOT commands which leverage the run_cmd logic and should also leverage the run_cmd_message for message display VAX/vax610_sysdev.c, vax730_sys.c, vax750_cmi.c, vax780_sbi.c - Added BOOT command message dispatch to run_cmd_message for simulators which perform preprocessing on BOOT activities but otherwise then dispatch to run_cmd. --- VAX/vax610_sysdev.c | 2 +- VAX/vax730_sys.c | 2 +- VAX/vax750_cmi.c | 2 +- VAX/vax780_sbi.c | 2 +- scp.c | 35 +++++++++++++++++------------------ scp.h | 1 + 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/VAX/vax610_sysdev.c b/VAX/vax610_sysdev.c index 157cf550..8f24dc06 100644 --- a/VAX/vax610_sysdev.c +++ b/VAX/vax610_sysdev.c @@ -113,7 +113,7 @@ DEVICE sysd_dev = { CTAB vax610_cmd[] = { { "BOOT", &vax610_boot, RU_BOOT, - "bo{ot} {/R5:flg} boot device\n" }, + "bo{ot} {/R5:flg} boot device\n", &run_cmd_message }, { NULL } }; diff --git a/VAX/vax730_sys.c b/VAX/vax730_sys.c index 799bea7e..1b86e2d1 100644 --- a/VAX/vax730_sys.c +++ b/VAX/vax730_sys.c @@ -137,7 +137,7 @@ DEVICE sysb_dev = { CTAB vax730_cmd[] = { { "BOOT", &vax730_boot, RU_BOOT, - "bo{ot} {/R5:flg} boot device\n" }, + "bo{ot} {/R5:flg} boot device\n", &run_cmd_message }, { NULL } }; diff --git a/VAX/vax750_cmi.c b/VAX/vax750_cmi.c index 08bc9859..a3a12bf2 100644 --- a/VAX/vax750_cmi.c +++ b/VAX/vax750_cmi.c @@ -166,7 +166,7 @@ DEVICE cmi_dev = { CTAB vax750_cmd[] = { { "BOOT", &vax750_boot, RU_BOOT, - "bo{ot} {/R5:flg} boot device\n" }, + "bo{ot} {/R5:flg} boot device\n", &run_cmd_message }, { NULL } }; diff --git a/VAX/vax780_sbi.c b/VAX/vax780_sbi.c index 77a74464..64892b33 100644 --- a/VAX/vax780_sbi.c +++ b/VAX/vax780_sbi.c @@ -203,7 +203,7 @@ DEVICE sbi_dev = { CTAB vax780_cmd[] = { { "BOOT", &vax780_boot, RU_BOOT, - "bo{ot} {/R5:flg} boot device\n" }, + "bo{ot} {/R5:flg} boot device\n", &run_cmd_message }, { "FLOAD", &vax780_fload, 0, "fl{oad} {} load file from console floppy\n" }, { NULL } diff --git a/scp.c b/scp.c index 3cdc678a..2ff0a8bb 100644 --- a/scp.c +++ b/scp.c @@ -420,7 +420,6 @@ t_stat set_quiet (int32 flag, char *cptr); t_stat set_asynch (int32 flag, char *cptr); t_stat do_cmd_label (int32 flag, char *cptr, char *label); void int_handler (int signal); -void run_cmd_message (const char *unechod_cmdline, t_stat r); /* Global data */ @@ -889,15 +888,15 @@ while (stat != SCPE_EXIT) { /* in case exit */ stat_nomessage = stat_nomessage || (!sim_show_message);/* Apply global suppression */ stat = SCPE_BARE_STATUS(stat); /* remove possible flag */ sim_last_cmd_stat = stat; /* save command error status */ - if ((stat >= SCPE_BASE) && (!stat_nomessage)) { /* error? */ - if (cmdp && cmdp->message) /* special message handler? */ - cmdp->message (NULL, stat); - else { - printf ("%s\n", sim_error_text (stat)); - if (sim_log) - fprintf (sim_log, "%s\n", sim_error_text (stat)); - } - } + if (!stat_nomessage) /* displaying message status? */ + if (cmdp && (cmdp->message)) /* special message handler? */ + cmdp->message (NULL, stat); /* let it deal with display */ + else + if (stat >= SCPE_BASE) { /* error? */ + printf ("%s\n", sim_error_text (stat)); + if (sim_log) + fprintf (sim_log, "%s\n", sim_error_text (stat)); + } if (sim_vm_post != NULL) (*sim_vm_post) (TRUE); } /* end while */ @@ -1211,15 +1210,15 @@ do { fprintf (sim_log, "%s> %s\n", do_position(), ocptr); } } - if ((stat >= SCPE_BASE) && !stat_nomessage) { /* report error if not suppressed */ - if (cmdp && cmdp->message) { /* special message handler */ + if (!stat_nomessage) { /* report error if not suppressed */ + if (cmdp && cmdp->message) /* special message handler */ cmdp->message ((!echo && !sim_quiet) ? ocptr : NULL, stat); - } - else { - printf ("%s\n", sim_error_text (stat)); - if (sim_log) - fprintf (sim_log, "%s\n", sim_error_text (stat)); - } + else + if (stat >= SCPE_BASE) { /* report error if not suppressed */ + printf ("%s\n", sim_error_text (stat)); + if (sim_log) + fprintf (sim_log, "%s\n", sim_error_text (stat)); + } } if (staying && (sim_on_check[sim_do_depth]) && diff --git a/scp.h b/scp.h index 3ee43b97..5dd0f6b1 100644 --- a/scp.h +++ b/scp.h @@ -59,6 +59,7 @@ t_stat exdep_cmd (int32 flag, char *ptr); t_stat eval_cmd (int32 flag, char *ptr); t_stat load_cmd (int32 flag, char *ptr); t_stat run_cmd (int32 flag, char *ptr); +void run_cmd_message (const char *unechod_cmdline, t_stat r); t_stat attach_cmd (int32 flag, char *ptr); t_stat detach_cmd (int32 flag, char *ptr); t_stat assign_cmd (int32 flag, char *ptr);