1
0
mirror of https://github.com/simh/simh.git synced 2026-02-01 06:13:34 +00:00

FRONTPANEL: sim_frontpanel API release 7

- Add explicit support for referencing register array elements.
- Reworked the parsing of the grouped output sets for explicitly queried
   registers and the auto repeat output sets.
- Fix race conditions in the various RUN, START, BOOT, and CONT commands.
- Fix incorrect RUN/HALT state after STEP commands
- Tolerate input TCP traffic that has been legitimately coalesced into
   different
This commit is contained in:
Mark Pizzolato
2017-12-09 01:25:34 -08:00
parent 0e4ee6ecce
commit b4c3fa1656
3 changed files with 208 additions and 164 deletions

View File

@@ -62,6 +62,7 @@ unsigned int PCQ[32];
int PSL_bits[32];
int PC_bits[32];
int PC_indirect_bits[32];
int PCQ_3_bits[32];
int update_display = 1;
@@ -422,7 +423,7 @@ if (sim_panel_set_sampling_parameters_ex (panel, 500, 10, 100)) {
goto Done;
}
if (sim_panel_add_register_indirect_bits (panel, "PC", NULL, 32, PC_indirect_bits)) {
printf ("Error adding register 'PSL' bits: %s\n", sim_panel_get_error());
printf ("Error adding register 'PC' indirect bits: %s\n", sim_panel_get_error());
goto Done;
}
if (sim_panel_add_register_bits (panel, "PSL", NULL, 32, PSL_bits)) {
@@ -433,6 +434,10 @@ if (sim_panel_add_register_bits (panel, "PC", NULL, 32, PC_bits)) {
printf ("Error adding register 'PSL' bits: %s\n", sim_panel_get_error());
goto Done;
}
if (sim_panel_add_register_bits (panel, "PCQ[3]", NULL, 32, PCQ_3_bits)) {
printf ("Error adding register 'PCQ[3]' bits: %s\n", sim_panel_get_error());
goto Done;
}
if (1) {
unsigned int noop_noop_noop_halt = 0x00010101, addr400 = 0x00000400, pc_value;
int mstime = 0;
@@ -464,7 +469,24 @@ if (1) {
goto Done;
}
if (pc_value != addr400 + 4) {
printf ("Unexpected error getting PC value: %08X, expected: %08X\n", pc_value, addr400 + 4);
printf ("Unexpected PC value after HALT: %08X, expected: %08X\n", pc_value, addr400 + 4);
goto Done;
}
if (sim_panel_gen_deposit (panel, "PC", sizeof(addr400), &addr400)) {
printf ("Error setting PC to %08X: %s\n", addr400, sim_panel_get_error());
goto Done;
}
if (sim_panel_exec_step (panel)) {
printf ("Error executing a single step: %s\n", sim_panel_get_error());
goto Done;
}
pc_value = 0;
if (sim_panel_gen_examine (panel, "PC", sizeof(pc_value), &pc_value)) {
printf ("Unexpected error getting PC value: %s\n", sim_panel_get_error());
goto Done;
}
if (pc_value != addr400 + 1) {
printf ("Unexpected PC value after STEP: %08X, expected: %08X\n", pc_value, addr400 + 1);
goto Done;
}
}