From b198e13c09b784e37dcdfa334d3213dc4f09b850 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 15 Jan 2015 12:37:30 -0800 Subject: [PATCH] FRONTPANEL: Initial API description --- sim_frontpanel.h | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 sim_frontpanel.h diff --git a/sim_frontpanel.h b/sim_frontpanel.h new file mode 100644 index 00000000..1bcce23e --- /dev/null +++ b/sim_frontpanel.h @@ -0,0 +1,95 @@ +/* sim_frontpanel.h: simulator frontpanel API definitions + + Copyright (c) 2015, Mark Pizzolato + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the name of Mark Pizzolato shall not be + used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization from Robert M Supnik. + + 15-Jan-15 MP Initial implementation + + This module defines interface between a front panel application and a simh + simulator. Facilities provide ways to gather information from and to + observe and control the state of a simulator. + +*/ + +#ifndef SIM_FRONTPANEL_H_ +#define SIM_FRONTPANEL_H_ 0 + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + Idle, + InputTransfer, + OutputTransfer, + Halted, + Running + } OperationalState; + +typedef struct sim_frontpanel PANEL; + +typedef void (*PANEL_DISPLAY_PCALLBACK)(PANEL *panel, + void *context); + +PANEL * +sim_panel_start_simulator (const char *sim_path, + const char *sim_config); + +int +sim_panel_stop_simulator (PANEL *panel); + +int +sim_panel_add_register (PANEL *panel, + const char *name, + int radix, + size_t size, + void *addr); + +int +sim_panel_get_registers (PANEL *panel); + +int +sim_panel_set_display_callback (PANEL *panel, + PANEL_DISPLAY_PCALLBACK callback, + void *context, + int callbacks_per_second); + +int +sim_panel_exec_halt (PANEL *panel); + +int +sim_panel_exec_run (PANEL *panel); + +int +sim_panel_exec_step (PANEL *panel); + +const char *sim_panel_get_error (void); +void sim_panel_clear_error (void); +int sim_panel_set_error (const char *fmt, ...); + + +#ifdef __cplusplus +} +#endif + +#endif /* SIM_FRONTPANEL_H_ */ \ No newline at end of file