1
0
mirror of https://github.com/simh/simh.git synced 2026-02-12 02:48:38 +00:00

SCP: Extended EXPECT and SEND to have more flexible activation delays

- EXPECT will now tolerate a HALTAFTER=n parameter which delay the simulator stopping execution for n instructions.  Unpredictable behavior will happen if multiple EXPECT conditions see matching data before the first actualy halt occurs.
- SEND has an AFTER=n argument which delays the initial stuffed data from being input for at least n instructions.  It also has a DELAY=m argument which specifies the minimum number of instructions which must execute between stuffed input data.
- Changed run_cmd() to no longer clear pending breakpoint actions before starting instruction execution.
- Added a -Q switch to the commands which dispatch through run_cmd() (RUN, STEP, NEXT, GO, BOOT, etc.).  This switch will suppress status output when execution stops.  This will allow sequences of breakpoint action commands to silently execute when needed.
This commit is contained in:
Mark Pizzolato
2014-10-20 16:47:33 -07:00
parent 7bb57ca979
commit 5a4bbbad8d
3 changed files with 77 additions and 36 deletions

View File

@@ -664,27 +664,29 @@ struct sim_exptab {
/* Expect Context */
struct sim_expect {
struct sim_device *dptr; /* Device (for Debug) */
uint32 dbit; /* Debugging Bit */
struct sim_exptab *rules; /* match rules */
int32 size; /* count of match rules */
uint8 *buf; /* buffer of output data which has produced */
uint32 buf_ins; /* buffer insertion point for the next output data */
uint32 buf_size; /* buffer size */
struct sim_device *dptr; /* Device (for Debug) */
uint32 dbit; /* Debugging Bit */
struct sim_exptab *rules; /* match rules */
int32 size; /* count of match rules */
uint32 after; /* delay before halting */
uint8 *buf; /* buffer of output data which has produced */
uint32 buf_ins; /* buffer insertion point for the next output data */
uint32 buf_size; /* buffer size */
};
/* Send Context */
struct sim_send {
uint32 delay; /* instruction delay before/between sent data */
struct sim_device *dptr; /* Device (for Debug) */
uint32 dbit; /* Debugging Bit */
uint32 delay; /* instruction delay between sent data */
#define SEND_DEFAULT_DELAY 1000 /* default delay instruction count */
double next_time; /* execution time when next data can be sent */
uint8 *buffer; /* buffer */
size_t bufsize; /* buffer size */
int32 insoff; /* insert offset */
int32 extoff; /* extra offset */
struct sim_device *dptr; /* Device (for Debug) */
uint32 dbit; /* Debugging Bit */
uint32 after; /* instruction delay before sending any data */
double next_time; /* execution time when next data can be sent */
uint8 *buffer; /* buffer */
size_t bufsize; /* buffer size */
int32 insoff; /* insert offset */
int32 extoff; /* extra offset */
};
/* Debug table */