1
0
mirror of https://github.com/simh/simh.git synced 2026-01-25 19:56:25 +00:00

FRONTPANEL: sim_frontpanel API version 3 release

Adds:
1) Simulator side execution of register update activities at an interval
    specified in usecs.  Rates in excess of 1000Hz should be achievable
    for locally connected frontpanel applications.
2) New API for simulators to describe the register state available in
    the simulator.  If all of a the state which is potentially interesting
    to front panel applications is always present in the variables
    described by simh REG structures, then frontpanel API access to
    that data can be more efficiently provided.
This commit is contained in:
Mark Pizzolato
2017-01-27 23:06:30 -08:00
parent 7ac92a0e84
commit 110ded6904
6 changed files with 726 additions and 221 deletions

View File

@@ -148,11 +148,10 @@ if ((argc > 1) && ((!strcmp("-d", argv[1])) || (!strcmp("-D", argv[1])) || (!str
if ((f = fopen (sim_config, "w"))) {
if (debug) {
fprintf (f, "set verbose\n");
fprintf (f, "set log simulator.dbg\n");
fprintf (f, "set debug -n -a log\n");
fprintf (f, "set debug -n -a simulator.dbg\n");
fprintf (f, "set cpu conhalt\n");
fprintf (f, "set remote telnet=2226\n");
fprintf (f, "set rem-con debug=XMT;RCV\n");
fprintf (f, "set rem-con debug=XMT;RCV;MODE;REPEAT;CMD\n");
fprintf (f, "set remote notelnet\n");
}
fprintf (f, "set cpu autoboot\n");
@@ -184,9 +183,8 @@ if (!panel) {
}
if (debug) {
sim_panel_set_debug_mode (panel, DBG_XMT|DBG_RCV);
sim_panel_set_debug_mode (panel, DBG_XMT|DBG_RCV|DBG_REQ|DBG_RSP);
}
tape = sim_panel_add_device_panel (panel, "TAPE DRIVE");
if (!tape) {
@@ -313,7 +311,7 @@ if (sim_panel_get_registers (panel, NULL)) {
printf ("Error getting register data: %s\n", sim_panel_get_error());
goto Done;
}
if (sim_panel_set_display_callback (panel, &DisplayCallback, NULL, 5)) {
if (sim_panel_set_display_callback_interval (panel, &DisplayCallback, NULL, 200000)) {
printf ("Error setting automatic display callback: %s\n", sim_panel_get_error());
goto Done;
}
@@ -336,19 +334,27 @@ if (sim_panel_dismount (panel, "RL0")) {
}
remove ("TEST-RL.DSK");
if (sim_panel_break_set (panel, "400")) {
printf ("Unexpected establishing a breakpoint: %s\n", sim_panel_get_error());
printf ("Unexpected error establishing a breakpoint: %s\n", sim_panel_get_error());
goto Done;
}
if (sim_panel_break_clear (panel, "400")) {
printf ("Unexpected clearing a breakpoint: %s\n", sim_panel_get_error());
printf ("Unexpected error clearing a breakpoint: %s\n", sim_panel_get_error());
goto Done;
}
if (sim_panel_break_output_set (panel, "\"32..31..30\"")) {
printf ("Unexpected establishing an output breakpoint: %s\n", sim_panel_get_error());
printf ("Unexpected error establishing an output breakpoint: %s\n", sim_panel_get_error());
goto Done;
}
if (sim_panel_break_output_clear (panel, "\"32..31..30\"")) {
printf ("Unexpected clearing an output breakpoint: %s\n", sim_panel_get_error());
printf ("Unexpected error clearing an output breakpoint: %s\n", sim_panel_get_error());
goto Done;
}
if (sim_panel_break_output_set (panel, "-P \"Normal operation not possible.\"")) {
printf ("Unexpected error establishing an output breakpoint: %s\n", sim_panel_get_error());
goto Done;
}
if (sim_panel_break_output_set (panel, "-P \"Device? [XQA0]: \"")) {
printf ("Unexpected error establishing an output breakpoint: %s\n", sim_panel_get_error());
goto Done;
}
sim_panel_clear_error ();