diff --git a/BESM6/besm6_cpu.c b/BESM6/besm6_cpu.c index 7ebed536..646b71f9 100644 --- a/BESM6/besm6_cpu.c +++ b/BESM6/besm6_cpu.c @@ -93,7 +93,7 @@ t_stat cpu_deposit (t_value val, t_addr addr, UNIT *uptr, int32 sw); t_stat cpu_reset (DEVICE *dptr); t_stat cpu_req (UNIT *u, int32 val, char *cptr, void *desc); t_stat cpu_set_pult (UNIT *u, int32 val, char *cptr, void *desc); -t_stat cpu_show_pult (FILE *st, struct sim_unit *up, int32 v, void *dp); +t_stat cpu_show_pult (FILE *st, UNIT *up, int32 v, void *dp); /* @@ -415,7 +415,7 @@ t_stat cpu_set_pult (UNIT *u, int32 val, char *cptr, void *desc) return SCPE_ARG; } -t_stat cpu_show_pult (FILE *st, struct sim_unit *up, int32 v, void *dp) +t_stat cpu_show_pult (FILE *st, UNIT *up, int32 v, void *dp) { fprintf(st, "Pult packet switch position is %d", pult_packet_switch); return SCPE_OK; diff --git a/BESM6/besm6_defs.h b/BESM6/besm6_defs.h index b2f9f912..ef85a8c1 100644 --- a/BESM6/besm6_defs.h +++ b/BESM6/besm6_defs.h @@ -360,7 +360,7 @@ t_stat fprint_sym (FILE *of, t_addr addr, t_value *val, void besm6_draw_panel (int force); t_stat besm6_init_panel (UNIT *u, int32 val, char *cptr, void *desc); t_stat besm6_close_panel (UNIT *u, int32 val, char *cptr, void *desc); -t_stat besm6_show_panel (FILE *st, struct sim_unit *up, int32 v, void *dp); +t_stat besm6_show_panel (FILE *st, UNIT *up, int32 v, void *dp); /* * Арифметика. diff --git a/BESM6/besm6_panel.c b/BESM6/besm6_panel.c index 55b91dfe..06022b99 100644 --- a/BESM6/besm6_panel.c +++ b/BESM6/besm6_panel.c @@ -441,7 +441,7 @@ t_stat besm6_close_panel (UNIT *u, int32 val, char *cptr, void *desc) return SCPE_OK; } -t_stat besm6_show_panel (FILE *st, struct sim_unit *up, int32 v, void *dp) +t_stat besm6_show_panel (FILE *st, UNIT *up, int32 v, void *dp) { if (screen) fprintf(st, "Panel displayed"); @@ -688,7 +688,7 @@ t_stat besm6_close_panel (UNIT *u, int32 val, char *cptr, void *desc) return SCPE_NOTATT; } -t_stat besm6_show_panel (FILE *st, struct sim_unit *up, int32 v, void *dp) +t_stat besm6_show_panel (FILE *st, UNIT *up, int32 v, void *dp) { return SCPE_NOTATT; } diff --git a/PDP10/pdp10_lp20.c b/PDP10/pdp10_lp20.c index fa941d96..50f0a013 100644 --- a/PDP10/pdp10_lp20.c +++ b/PDP10/pdp10_lp20.c @@ -217,8 +217,8 @@ static t_bool lp20_davfu (int32 c); static void update_lpcs (int32 flg); static void change_rdy (int32 setrdy, int32 clrrdy); static int16 evenbits (int16 value); -static t_stat lp20_help (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *cptr); +static t_stat lp20_help (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *cptr); static const char *lp20_description (DEVICE *dptr); /* DEC standard VFU tape for 'optical' VFU default. @@ -1278,8 +1278,8 @@ update_lpcs (0); return SCPE_OK; } -static t_stat lp20_help (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *cptr) +static t_stat lp20_help (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *cptr) { fprintf (st, "The LP20 DMA line printer controller is a UNIBUS device developed by the 36-bit product line.\n" diff --git a/PDP11/pdp11_kmc.c b/PDP11/pdp11_kmc.c index eee574d3..56ac14e1 100644 --- a/PDP11/pdp11_kmc.c +++ b/PDP11/pdp11_kmc.c @@ -493,8 +493,8 @@ static t_stat kmc_setLineSpeed (UNIT *txup, int32 val, char *cptr, void *desc); static t_stat kmc_showLineSpeed (FILE *st, UNIT *txup, int32 val, void *desc); static t_stat kmc_showStatus (FILE *st, UNIT *up, int32 v, void *dp); -static t_stat kmc_help (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *cptr); +static t_stat kmc_help (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *cptr); static const char *kmc_description (DEVICE *dptr); /* Global data */ @@ -2941,8 +2941,8 @@ t_stat kmc_showStatus (FILE *st, UNIT *up, int32 v, void *dp) { * */ -static t_stat kmc_help (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *cptr) { +static t_stat kmc_help (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *cptr) { const char *const text = " The KMC11-A is a general purpose microprocessor that is used in\n" " several DEC products. The KDP is an emulation of one of those\n" diff --git a/scp.c b/scp.c index 163d4e83..37d2c9dc 100644 --- a/scp.c +++ b/scp.c @@ -8465,24 +8465,24 @@ else reason = result (SCPE_OK if ok) */ -t_stat sim_activate_after_abs (UNIT *uptr, int32 event_time) +t_stat sim_activate_after_abs (UNIT *uptr, uint32 event_time) { return _sim_activate_after_abs (uptr, event_time); } -t_stat _sim_activate_after_abs (UNIT *uptr, int32 event_time) +t_stat _sim_activate_after_abs (UNIT *uptr, uint32 event_time) { AIO_ACTIVATE (_sim_activate_after_abs, uptr, event_time); sim_cancel (uptr); return _sim_activate_after (uptr, event_time); } -t_stat sim_activate_after (UNIT *uptr, int32 event_time) +t_stat sim_activate_after (UNIT *uptr, uint32 usec_delay) { -return _sim_activate_after (uptr, event_time); +return _sim_activate_after (uptr, usec_delay); } -t_stat _sim_activate_after (UNIT *uptr, int32 usec_delay) +t_stat _sim_activate_after (UNIT *uptr, uint32 usec_delay) { if (sim_is_active (uptr)) /* already active? */ return SCPE_OK; @@ -10000,8 +10000,8 @@ return ret; * * Device help can be presented hierarchically by calling * - * t_stat scp_help (FILE *st, struct sim_device *dptr, - * struct sim_unit *uptr, int flag, const char *help, char *cptr) + * t_stat scp_help (FILE *st, DEVICE *dptr, + * UNIT *uptr, int flag, const char *help, char *cptr) * * or one of its three cousins from the device HELP routine. * @@ -10083,8 +10083,8 @@ return; /* Build a help tree from a string. * Handles substitutions, formatting. */ -static TOPIC *buildHelp (TOPIC *topic, struct sim_device *dptr, - struct sim_unit *uptr, const char *htext, va_list ap) +static TOPIC *buildHelp (TOPIC *topic, DEVICE *dptr, + UNIT *uptr, const char *htext, va_list ap) { char *end; size_t n, ilvl; @@ -10368,7 +10368,7 @@ free (prefix); return newp; } -static void displayMagicTopic (FILE *st, struct sim_device *dptr, TOPIC *topic) +static void displayMagicTopic (FILE *st, DEVICE *dptr, TOPIC *topic) { char tbuf[CBUFSIZE]; size_t i, skiplines; @@ -10434,8 +10434,8 @@ return; /* Flatten and display help for those who say they prefer it. */ -static t_stat displayFlatHelp (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, +static t_stat displayFlatHelp (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, TOPIC *topic, va_list ap ) { size_t i; @@ -10498,8 +10498,8 @@ return match; * Takes a va_list */ -t_stat scp_vhelp (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, +t_stat scp_vhelp (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *help, const char *cptr, va_list ap) { @@ -10731,8 +10731,8 @@ return SCPE_OK; /* variable argument list shell - most commonly used */ -t_stat scp_help (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, +t_stat scp_help (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *help, const char *cptr, ...) { t_stat r; @@ -10753,8 +10753,8 @@ return r; * be found. */ -t_stat scp_vhelpFromFile (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, +t_stat scp_vhelpFromFile (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *helpfile, const char *cptr, va_list ap) { @@ -10850,8 +10850,8 @@ free (help); return r; } -t_stat scp_helpFromFile (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, +t_stat scp_helpFromFile (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *helpfile, const char *cptr, ...) { t_stat r; diff --git a/scp.h b/scp.h index e1159b70..b5c1b2c3 100644 --- a/scp.h +++ b/scp.h @@ -116,10 +116,10 @@ t_stat sim_activate (UNIT *uptr, int32 interval); t_stat _sim_activate (UNIT *uptr, int32 interval); t_stat sim_activate_abs (UNIT *uptr, int32 interval); t_stat sim_activate_notbefore (UNIT *uptr, int32 rtime); -t_stat sim_activate_after (UNIT *uptr, int32 usecs_walltime); -t_stat _sim_activate_after (UNIT *uptr, int32 usecs_walltime); -t_stat sim_activate_after_abs (UNIT *uptr, int32 usecs_walltime); -t_stat _sim_activate_after_abs (UNIT *uptr, int32 usecs_walltime); +t_stat sim_activate_after (UNIT *uptr, uint32 usecs_walltime); +t_stat _sim_activate_after (UNIT *uptr, uint32 usecs_walltime); +t_stat sim_activate_after_abs (UNIT *uptr, uint32 usecs_walltime); +t_stat _sim_activate_after_abs (UNIT *uptr, uint32 usecs_walltime); t_stat sim_cancel (UNIT *uptr); t_bool sim_is_active (UNIT *uptr); int32 sim_activate_time (UNIT *uptr); @@ -220,14 +220,14 @@ void fprint_stopped_gen (FILE *st, t_stat v, REG *pc, DEVICE *dptr); #define SCP_HELP_FLAT (1u << 31) /* Force flat help when prompting is not possible */ #define SCP_HELP_ONECMD (1u << 30) /* Display one topic, do not prompt */ #define SCP_HELP_ATTACH (1u << 29) /* Top level topic is ATTACH help */ -t_stat scp_help (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *help, const char *cptr, ...); -t_stat scp_vhelp (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *help, const char *cptr, va_list ap); -t_stat scp_helpFromFile (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *help, const char *cptr, ...); -t_stat scp_vhelpFromFile (FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *help, const char *cptr, va_list ap); +t_stat scp_help (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *help, const char *cptr, ...); +t_stat scp_vhelp (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *help, const char *cptr, va_list ap); +t_stat scp_helpFromFile (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *help, const char *cptr, ...); +t_stat scp_vhelpFromFile (FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *help, const char *cptr, va_list ap); /* Global data */ diff --git a/scp_help.h b/scp_help.h index f5c92e7b..19b46137 100644 --- a/scp_help.h +++ b/scp_help.h @@ -145,20 +145,20 @@ * To make use of this type of help in your device, create (or replace) a help routine with one that * calls scp_help. Most of the arguments are the same as those of the device help routine. * - * t_stat scp_help (FILE *st, struct sim_device *dptr, - * struct sim_unit *uptr, int flag, const char *help, char *cptr, ...) + * t_stat scp_help (FILE *st, DEVICE *dptr, + * UNIT *uptr, int flag, const char *help, char *cptr, ...) * * If you need to pass the variable argument list from another routine, use: * - * t_stat scp_vhelp (FILE *st, struct sim_device *dptr, - * struct sim_unit *uptr, int flag, const char *help, char *cptr, va_list ap) + * t_stat scp_vhelp (FILE *st, DEVICE *dptr, + * UNIT *uptr, int flag, const char *help, char *cptr, va_list ap) * * To obtain the help from an external file (Note this reads the entire file into memory): - * t_stat scp_helpFromFile (FILE *st, struct sim_device *dptr, - * struct sim_unit *uptr, int flag, const char *helpfile, char *cptr, ...) + * t_stat scp_helpFromFile (FILE *st, DEVICE *dptr, + * UNIT *uptr, int flag, const char *helpfile, char *cptr, ...) * and for va_list: - * t_stat scp_vhelpFromFile (FILE *st, struct sim_device *dptr, - * struct sim_unit *uptr, int flag, const char *helpfile, char *cptr, va_list ap) { + * t_stat scp_vhelpFromFile (FILE *st, DEVICE *dptr, + * UNIT *uptr, int flag, const char *helpfile, char *cptr, va_list ap) { * * dptr and uptr are only used if the %D and/or %U escapes are encountered. * help is the help text; helpfile is the help file name. diff --git a/sim_defs.h b/sim_defs.h index f42b3464..01233aa2 100644 --- a/sim_defs.h +++ b/sim_defs.h @@ -377,44 +377,64 @@ typedef uint32 t_addr; /* 2 - to not be a valid/possible pointer (alignment) */ #define QUEUE_LIST_END ((UNIT *)1) +/* Typedefs for principal structures */ + +typedef struct DEVICE DEVICE; +typedef struct UNIT UNIT; +typedef struct REG REG; +typedef struct CTAB CTAB; +typedef struct C1TAB C1TAB; +typedef struct SHTAB SHTAB; +typedef struct MTAB MTAB; +typedef struct SCHTAB SCHTAB; +typedef struct BRKTAB BRKTAB; +typedef struct EXPTAB EXPTAB; +typedef struct EXPECT EXPECT; +typedef struct SEND SEND; +typedef struct DEBTAB DEBTAB; +typedef struct FILEREF FILEREF; +typedef struct BITFIELD BITFIELD; + +typedef t_stat (*ACTIVATE_API)(UNIT *unit, int32 interval); + /* Device data structure */ -struct sim_device { +struct DEVICE { const char *name; /* name */ - struct sim_unit *units; /* units */ - struct sim_reg *registers; /* registers */ - struct sim_mtab *modifiers; /* modifiers */ + UNIT *units; /* units */ + REG *registers; /* registers */ + MTAB *modifiers; /* modifiers */ uint32 numunits; /* #units */ uint32 aradix; /* address radix */ uint32 awidth; /* address width */ uint32 aincr; /* addr increment */ uint32 dradix; /* data radix */ uint32 dwidth; /* data width */ - t_stat (*examine)(t_value *v, t_addr a, struct sim_unit *up, + t_stat (*examine)(t_value *v, t_addr a, UNIT *up, int32 sw); /* examine routine */ - t_stat (*deposit)(t_value v, t_addr a, struct sim_unit *up, + t_stat (*deposit)(t_value v, t_addr a, UNIT *up, int32 sw); /* deposit routine */ - t_stat (*reset)(struct sim_device *dp);/* reset routine */ - t_stat (*boot)(int32 u, struct sim_device *dp); + t_stat (*reset)(DEVICE *dp); /* reset routine */ + t_stat (*boot)(int32 u, DEVICE *dp); /* boot routine */ - t_stat (*attach)(struct sim_unit *up, char *cp); + t_stat (*attach)(UNIT *up, char *cp); /* attach routine */ - t_stat (*detach)(struct sim_unit *up); /* detach routine */ + t_stat (*detach)(UNIT *up); /* detach routine */ void *ctxt; /* context */ uint32 flags; /* flags */ uint32 dctrl; /* debug control */ - struct sim_debtab *debflags; /* debug flags */ - t_stat (*msize)(struct sim_unit *up, int32 v, char *cp, void *dp); + DEBTAB *debflags; /* debug flags */ + t_stat (*msize)(UNIT *up, int32 v, char *cp, void *dp); /* mem size routine */ char *lname; /* logical name */ - t_stat (*help)(FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *cptr); + t_stat (*help)(FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *cptr); /* help */ - t_stat (*attach_help)(FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, const char *cptr); + t_stat (*attach_help)(FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, const char *cptr); /* attach help */ void *help_ctx; /* Context available to help routines */ - const char *(*description)(struct sim_device *dptr); + const char *(*description)(DEVICE *dptr); /* Device Description */ }; @@ -466,9 +486,9 @@ struct sim_device { are for a typical sequential device. */ -struct sim_unit { - struct sim_unit *next; /* next active */ - t_stat (*action)(struct sim_unit *up); /* action routine */ +struct UNIT { + UNIT *next; /* next active */ + t_stat (*action)(UNIT *up); /* action routine */ char *filename; /* open file name */ FILE *fileref; /* file reference */ void *filebuf; /* memory buffer */ @@ -478,7 +498,7 @@ struct sim_unit { uint32 dynflags; /* dynamic flags */ t_addr capac; /* capacity */ t_addr pos; /* file position */ - void (*io_flush)(struct sim_unit *up);/* io flush routine */ + void (*io_flush)(UNIT *up); /* io flush routine */ uint32 iostarttime; /* I/O start time */ int32 buf; /* buffer */ int32 wait; /* wait */ @@ -490,12 +510,12 @@ struct sim_unit { void *up8; /* device specific */ void *tmxr; /* TMXR linkage */ #ifdef SIM_ASYNCH_IO - void (*a_check_completion)(struct sim_unit *); - t_bool (*a_is_active)(struct sim_unit *); - void (*a_cancel)(struct sim_unit *); - struct sim_unit *a_next; /* next asynch active */ + void (*a_check_completion)(UNIT *); + t_bool (*a_is_active)(UNIT *); + void (*a_cancel)(UNIT *); + UNIT *a_next; /* next asynch active */ int32 a_event_time; - t_stat (*a_activate_call)(struct sim_unit *, int32); + ACTIVATE_API a_activate_call; /* Asynchronous Polling control */ /* These fields should only be referenced when holding the sim_tmxr_poll_lock */ t_bool a_polling_now; /* polling active flag */ @@ -547,7 +567,7 @@ struct sim_unit { #define UNIT_V_DF_TAPE 4 /* Bit offset for Tape Density reservation */ #define UNIT_S_DF_TAPE 3 /* Bits Reserved for Tape Density */ -struct sim_bitfield { +struct BITFIELD { const char *name; /* field name */ uint32 offset; /* starting bit */ uint32 width; /* width */ @@ -557,7 +577,7 @@ struct sim_bitfield { /* Register data structure */ -struct sim_reg { +struct REG { const char *name; /* name */ void *loc; /* location */ uint32 radix; /* radix */ @@ -565,7 +585,7 @@ struct sim_reg { uint32 offset; /* starting bit */ uint32 depth; /* save depth */ const char *desc; /* description */ - struct sim_bitfield *fields; /* bit fields */ + BITFIELD *fields; /* bit fields */ uint32 flags; /* flags */ uint32 qptr; /* circ q ptr */ }; @@ -589,7 +609,7 @@ struct sim_reg { /* Command tables, base and alternate formats */ -struct sim_ctab { +struct CTAB { const char *name; /* name */ t_stat (*action)(int32 flag, char *cptr); /* action routine */ @@ -600,32 +620,32 @@ struct sim_ctab { /* message printing routine */ }; -struct sim_c1tab { +struct C1TAB { const char *name; /* name */ - t_stat (*action)(struct sim_device *dptr, struct sim_unit *uptr, + t_stat (*action)(DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr); /* action routine */ int32 arg; /* argument */ const char *help; /* help string */ }; -struct sim_shtab { +struct SHTAB { const char *name; /* name */ - t_stat (*action)(FILE *st, struct sim_device *dptr, - struct sim_unit *uptr, int32 flag, char *cptr); + t_stat (*action)(FILE *st, DEVICE *dptr, + UNIT *uptr, int32 flag, char *cptr); int32 arg; /* argument */ const char *help; /* help string */ }; /* Modifier table - only extended entries have disp, reg, or flags */ -struct sim_mtab { +struct MTAB { uint32 mask; /* mask */ uint32 match; /* match */ const char *pstring; /* print string */ const char *mstring; /* match string */ - t_stat (*valid)(struct sim_unit *up, int32 v, char *cp, void *dp); + t_stat (*valid)(UNIT *up, int32 v, char *cp, void *dp); /* validation routine */ - t_stat (*disp)(FILE *st, struct sim_unit *up, int32 v, void *dp); + t_stat (*disp)(FILE *st, UNIT *up, int32 v, void *dp); /* display routine */ void *desc; /* value descriptor */ /* REG * if MTAB_VAL */ @@ -649,7 +669,7 @@ struct sim_mtab { /* Search table */ -struct sim_schtab { +struct SCHTAB { int32 logic; /* logical operator */ int32 boolop; /* boolean operator */ uint32 count; /* value count in mask and comp arrays */ @@ -659,7 +679,7 @@ struct sim_schtab { /* Breakpoint table */ -struct sim_brktab { +struct BRKTAB { t_addr addr; /* address */ uint32 typ; /* mask of types */ #define BRK_TYP_DYN_STEPOVER (SWMASK ('Z'+1)) @@ -671,7 +691,7 @@ struct sim_brktab { /* Expect rule */ -struct sim_exptab { +struct EXPTAB { uint8 *match; /* match string */ uint32 size; /* match string size */ char *match_pattern; /* match pattern for format */ @@ -690,10 +710,10 @@ struct sim_exptab { /* Expect Context */ -struct sim_expect { - struct sim_device *dptr; /* Device (for Debug) */ +struct EXPECT { + DEVICE *dptr; /* Device (for Debug) */ uint32 dbit; /* Debugging Bit */ - struct sim_exptab *rules; /* match rules */ + EXPTAB *rules; /* match rules */ int32 size; /* count of match rules */ uint32 after; /* delay before halting */ uint8 *buf; /* buffer of output data which has produced */ @@ -703,10 +723,10 @@ struct sim_expect { /* Send Context */ -struct sim_send { +struct SEND { uint32 delay; /* instruction delay between sent data */ #define SEND_DEFAULT_DELAY 1000 /* default delay instruction count */ - struct sim_device *dptr; /* Device (for Debug) */ + 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 */ @@ -718,7 +738,7 @@ struct sim_send { /* Debug table */ -struct sim_debtab { +struct DEBTAB { const char *name; /* control name */ uint32 mask; /* control bit */ const char *desc; /* description */ @@ -736,7 +756,7 @@ struct sim_debtab { #define SIM_DBG_AIO_QUEUE 0x40000 /* File Reference */ -struct sim_fileref { +struct FILEREF { char name[CBUFSIZE]; /* file name */ FILE *file; /* file handle */ int32 refcount; /* reference count */ @@ -820,23 +840,6 @@ struct sim_fileref { #endif #define ENDBITS {NULL} /* end of bitfield list */ -/* Typedefs for principal structures */ - -typedef struct sim_device DEVICE; -typedef struct sim_unit UNIT; -typedef struct sim_reg REG; -typedef struct sim_ctab CTAB; -typedef struct sim_c1tab C1TAB; -typedef struct sim_shtab SHTAB; -typedef struct sim_mtab MTAB; -typedef struct sim_schtab SCHTAB; -typedef struct sim_brktab BRKTAB; -typedef struct sim_exptab EXPTAB; -typedef struct sim_expect EXPECT; -typedef struct sim_send SEND; -typedef struct sim_debtab DEBTAB; -typedef struct sim_fileref FILEREF; -typedef struct sim_bitfield BITFIELD; /* Function prototypes */ @@ -1184,7 +1187,7 @@ extern int32 sim_asynch_inst_latency; } else { \ UNIT *q, *qe; \ ouptr->a_event_time = event_time; \ - ouptr->a_activate_call = caller; \ + ouptr->a_activate_call = (ACTIVATE_API)&caller; \ ouptr->a_next = QUEUE_LIST_END; /* Mark as on list */ \ do { \ do \ @@ -1211,11 +1214,11 @@ extern int32 sim_asynch_inst_latency; sim_debug (SIM_DBG_AIO_QUEUE, sim_dflt_dev, "Queueing Asynch events for %s after %d instructions\n", sim_uname(list), event_time);\ for (qe=(list); qe->a_next != QUEUE_LIST_END;) { \ qe->a_event_time = event_time; \ - qe->a_activate_call = caller; \ + qe->a_activate_call = (ACTIVATE_API)&caller; \ qe = qe->a_next; \ } \ qe->a_event_time = event_time; \ - qe->a_activate_call = caller; \ + qe->a_activate_call = (ACTIVATE_API)&caller; \ ouptr = (list); \ do { \ do \ @@ -1307,7 +1310,7 @@ extern int32 sim_asynch_inst_latency; } else { \ uptr->a_next = sim_asynch_queue; \ uptr->a_event_time = event_time; \ - uptr->a_activate_call = caller; \ + uptr->a_activate_call = (ACTIVATE_API)&caller; \ sim_asynch_queue = uptr; \ } \ if (sim_idle_wait) { \ @@ -1324,11 +1327,11 @@ extern int32 sim_asynch_inst_latency; sim_debug (SIM_DBG_AIO_QUEUE, sim_dflt_dev, "Queueing Asynch events for %s after %d instructions\n", sim_uname(list), event_time);\ for (qe=list; qe->a_next != QUEUE_LIST_END;) { \ qe->a_event_time = event_time; \ - qe->a_activate_call = caller; \ + qe->a_activate_call = (ACTIVATE_API)&caller; \ qe = qe->a_next; \ } \ qe->a_event_time = event_time; \ - qe->a_activate_call = caller; \ + qe->a_activate_call = (ACTIVATE_API)&caller; \ AIO_LOCK; \ qe->a_next = sim_asynch_queue; \ sim_asynch_queue = list; \ diff --git a/sim_timer.c b/sim_timer.c index feedf19d..4535436a 100644 --- a/sim_timer.c +++ b/sim_timer.c @@ -1440,7 +1440,7 @@ if (sim_asynch_enabled && sim_asynch_timer) sim_start_timer_services (); else { UNIT *uptr; - int32 accum = 0; + uint32 accum = 0; sim_stop_timer_services (); while (1) { @@ -1475,7 +1475,7 @@ if (0 == inst_per_sec) return inst_per_sec; } -t_stat sim_timer_activate_after (UNIT *uptr, int32 usec_delay) +t_stat sim_timer_activate_after (UNIT *uptr, uint32 usec_delay) { int inst_delay; double inst_delay_d, inst_per_sec; diff --git a/sim_timer.h b/sim_timer.h index 8f6b0404..d2fcf63a 100644 --- a/sim_timer.h +++ b/sim_timer.h @@ -120,7 +120,7 @@ uint32 sim_os_ms_sleep_init (void); void sim_start_timer_services (void); void sim_stop_timer_services (void); t_stat sim_timer_change_asynch (void); -t_stat sim_timer_activate_after (UNIT *uptr, int32 usec_delay); +t_stat sim_timer_activate_after (UNIT *uptr, uint32 usec_delay); t_stat sim_register_clock_unit (UNIT *uptr); t_stat sim_clock_coschedule (UNIT *uptr, int32 interval); t_stat sim_clock_coschedule_abs (UNIT *uptr, int32 interval); diff --git a/sim_tmxr.c b/sim_tmxr.c index 3ea6020f..38506eb0 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -3744,7 +3744,7 @@ return _sim_activate (uptr, interval); #endif } -t_stat tmxr_activate_after (UNIT *uptr, int32 usecs_walltime) +t_stat tmxr_activate_after (UNIT *uptr, uint32 usecs_walltime) { #if defined(SIM_ASYNCH_IO) && defined(SIM_ASYNCH_MUX) if ((!(uptr->dynflags & UNIT_TM_POLL)) || @@ -3757,7 +3757,7 @@ return _sim_activate_after (uptr, usecs_walltime); #endif } -t_stat tmxr_activate_after_abs (UNIT *uptr, int32 usecs_walltime) +t_stat tmxr_activate_after_abs (UNIT *uptr, uint32 usecs_walltime) { #if defined(SIM_ASYNCH_IO) && defined(SIM_ASYNCH_MUX) if ((!(uptr->dynflags & UNIT_TM_POLL)) || diff --git a/sim_tmxr.h b/sim_tmxr.h index 929f347e..a51281d1 100644 --- a/sim_tmxr.h +++ b/sim_tmxr.h @@ -272,8 +272,8 @@ t_stat tmxr_show_cstat (FILE *st, UNIT *uptr, int32 val, void *desc); t_stat tmxr_show_lines (FILE *st, UNIT *uptr, int32 val, void *desc); t_stat tmxr_show_open_devices (FILE* st, DEVICE *dptr, UNIT* uptr, int32 val, char* desc); t_stat tmxr_activate (UNIT *uptr, int32 interval); -t_stat tmxr_activate_after (UNIT *uptr, int32 usecs_walltime); -t_stat tmxr_activate_after_abs (UNIT *uptr, int32 usecs_walltime); +t_stat tmxr_activate_after (UNIT *uptr, uint32 usecs_walltime); +t_stat tmxr_activate_after_abs (UNIT *uptr, uint32 usecs_walltime); t_stat tmxr_clock_coschedule (UNIT *uptr, int32 interval); t_stat tmxr_clock_coschedule_abs (UNIT *uptr, int32 interval); t_stat tmxr_clock_coschedule_tmr (UNIT *uptr, int32 tmr, int32 interval);