diff --git a/doc/sigma_doc.doc b/doc/sigma_doc.doc new file mode 100644 index 00000000..40f24e77 Binary files /dev/null and b/doc/sigma_doc.doc differ diff --git a/sigma/sigma_cis.c b/sigma/sigma_cis.c index 969cee88..10afdd43 100644 --- a/sigma/sigma_cis.c +++ b/sigma/sigma_cis.c @@ -1,6 +1,6 @@ /* sigma_cis.c: Sigma decimal instructions - Copyright (c) 2007-2008, Robert M Supnik + Copyright (c) 2007-2018, Robert M Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -26,6 +26,8 @@ Questions: 1. On the Sigma 9, in ASCII mode, is an ASCII blank used in EBS? + + 02-Jun-2018 RMS Fixed unsigned < 0 in decimal compare (Mark Pizzolato) */ #include "sigma_defs.h" @@ -100,7 +102,7 @@ uint32 cis_dec (uint32 op, uint32 lnt, uint32 bva) { dstr_t src1, src2, src2x, dst; uint32 i, t, kint, ldivr, ldivd, ad, c, d, end; -int32 sc; +int32 sc, scmp; uint32 tr; if (lnt == 0) /* adjust length */ @@ -163,10 +165,10 @@ switch (op) { /* case on opcode */ if (src1.sign ^ src2.sign) /* signs differ? */ CC = src1.sign? CC4: CC3; /* set < or > */ else { /* same signs */ - t = CmpDstr (&src1, &src2); /* compare strings */ - if (t < 0) + scmp = CmpDstr (&src1, &src2); /* compare strings */ + if (scmp < 0) CC = (src1.sign? CC3: CC4); - else if (t > 0) + else if (scmp > 0) CC = (src1.sign? CC4: CC3); else CC = 0; } @@ -841,7 +843,7 @@ uint32 NibbleRshift (dstr_t *dsrc, uint32 sc, uint32 cin) int32 i; uint32 s, nc; -if (s = sc * 4) { +if ((s = sc * 4)) { for (i = DSTRLNT - 1; (int32) i >= 0; i--) { nc = (dsrc->val[i] << (32 - s)) & WMASK; dsrc->val[i] = ((dsrc->val[i] >> s) | @@ -865,7 +867,7 @@ uint32 NibbleLshift (dstr_t *dsrc, uint32 sc, uint32 cin) { uint32 i, s, nc; -if (s = sc * 4) { +if ((s = sc * 4)) { for (i = 0; i < DSTRLNT; i++) { nc = dsrc->val[i] >> (32 - s); dsrc->val[i] = ((dsrc->val[i] << s) | diff --git a/sigma/sigma_coc.c b/sigma/sigma_coc.c index 5fdaad53..97f4bf4b 100644 --- a/sigma/sigma_coc.c +++ b/sigma/sigma_coc.c @@ -97,9 +97,9 @@ t_stat muxc_svc (UNIT *uptr); t_stat muxo_svc (UNIT *uptr); t_stat muxi_rtc_svc (UNIT *uptr); t_stat mux_reset (DEVICE *dptr); -t_stat mux_attach (UNIT *uptr, char *cptr); +t_stat mux_attach (UNIT *uptr, CONST char *cptr); t_stat mux_detach (UNIT *uptr); -t_stat mux_vlines (UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat mux_vlines (UNIT *uptr, int32 val, CONST char *cptr, void *desc); void mux_reset_ln (int32 ln); void mux_scan_next (t_bool clr); t_stat muxi_put_char (uint32 c, uint32 ln); @@ -417,7 +417,7 @@ if ((newln >= 0) && (mux_sta[newln] & MUXL_REP)) { /* rcv enb pending? */ tmxr_poll_rx (&mux_desc); /* poll for input */ for (ln = 0; ln < MUX_NUMLIN; ln++) { /* loop thru lines */ if (mux_ldsc[ln].conn) { /* connected? */ - if (c = tmxr_getc_ln (&mux_ldsc[ln])) { /* get char */ + if ((c = tmxr_getc_ln (&mux_ldsc[ln]))) { /* get char */ if (c & SCPE_BREAK) /* break? */ mux_sta[ln] |= MUXL_RBP; /* set rcv brk */ else { /* normal char */ @@ -544,7 +544,7 @@ return SCPE_OK; /* Attach master unit */ -t_stat mux_attach (UNIT *uptr, char *cptr) +t_stat mux_attach (UNIT *uptr, CONST char *cptr) { t_stat r; @@ -572,7 +572,7 @@ return r; /* Change number of lines */ -t_stat mux_vlines (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat mux_vlines (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { int32 newln, i, t; t_stat r; diff --git a/sigma/sigma_cpu.c b/sigma/sigma_cpu.c index 2b14802b..87903d96 100644 --- a/sigma/sigma_cpu.c +++ b/sigma/sigma_cpu.c @@ -190,17 +190,17 @@ t_stat cpu_svc (UNIT *uptr); t_stat cpu_ex (t_value *vptr, t_addr addr, UNIT *uptr, int32 sw); t_stat cpu_dep (t_value val, t_addr addr, UNIT *uptr, int32 sw); t_stat cpu_reset (DEVICE *dptr); -t_stat cpu_set_size (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat cpu_set_type (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat cpu_set_opt (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat cpu_clr_opt (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat cpu_set_rblks (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat cpu_show_rblks (FILE *st, UNIT *uptr, int32 val, void *desc); -t_stat cpu_set_hist (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat cpu_show_hist (FILE *st, UNIT *uptr, int32 val, void *desc); -t_stat cpu_set_alarm (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat cpu_show_alarm (FILE *st, UNIT *uptr, int32 val, void *desc); -t_stat cpu_show_addr (FILE *st, UNIT *uptr, int32 val, void *desc); +t_stat cpu_set_size (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat cpu_set_type (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat cpu_set_opt (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat cpu_clr_opt (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat cpu_set_rblks (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat cpu_show_rblks (FILE *st, UNIT *uptr, int32 val, CONST void *desc); +t_stat cpu_set_hist (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat cpu_show_hist (FILE *st, UNIT *uptr, int32 val, CONST void *desc); +t_stat cpu_set_alarm (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat cpu_show_alarm (FILE *st, UNIT *uptr, int32 val, CONST void *desc); +t_stat cpu_show_addr (FILE *st, UNIT *uptr, int32 val, CONST void *desc); void set_rf_display (uint32 *rfbase); void inst_hist (uint32 ir, uint32 pc, uint32 typ); uint32 cpu_one_inst (uint32 real_pc, uint32 IR); @@ -252,8 +252,8 @@ extern uint32 int_reset (DEVICE *dev); extern void io_set_eimax (uint32 lnt); extern void io_sclr_req (uint32 inum, uint32 val); extern void io_sclr_arm (uint32 inum, uint32 val); -extern t_stat io_set_nchan (UNIT *uptr, int32 val, char *cptr, void *desc); -extern t_stat io_show_nchan (FILE *st, UNIT *uptr, int32 val, void *desc); +extern t_stat io_set_nchan (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +extern t_stat io_show_nchan (FILE *st, UNIT *uptr, int32 val, CONST void *desc); /* CPU data structures @@ -436,7 +436,7 @@ while (reason == 0) { /* loop until stop */ } if (sim_interval <= 0) { /* event queue? */ - if (reason = sim_process_event ()) /* process */ + if ((reason = sim_process_event ())) /* process */ break; int_hireq = io_eval_int (); /* re-evaluate intr */ } @@ -2575,7 +2575,7 @@ return SCPE_OK; /* Set CPU type */ -t_stat cpu_set_type (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat cpu_set_type (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { uint32 model = CPUF_GETMOD (val); @@ -2593,7 +2593,7 @@ return SCPE_OK; /* Set memory size */ -t_stat cpu_set_size (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat cpu_set_size (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { uint32 mc = 0; uint32 i; @@ -2614,7 +2614,7 @@ return SCPE_OK; /* Set and clear options */ -t_stat cpu_set_opt (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat cpu_set_opt (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { if ((val & (cpu_tab[cpu_model].std | cpu_tab[cpu_model].opt)) == 0) return SCPE_NOFNC; @@ -2622,7 +2622,7 @@ cpu_unit.flags |= val; return SCPE_OK; } -t_stat cpu_clr_opt (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat cpu_clr_opt (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { if (val & cpu_tab[cpu_model].std) return SCPE_NOFNC; @@ -2632,7 +2632,7 @@ return SCPE_OK; /* Set/show register blocks */ -t_stat cpu_set_rblks (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat cpu_set_rblks (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { int32 invmask, lnt, i, j; t_stat r; @@ -2656,7 +2656,7 @@ for (i = rf_bmax; i < RF_NBLK; i++) { /* zero unused */ return SCPE_OK; } -t_stat cpu_show_rblks (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat cpu_show_rblks (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { fprintf (st, "register blocks=%d", rf_bmax); return SCPE_OK; @@ -2678,13 +2678,13 @@ return; /* Front panael alarm */ -t_stat cpu_set_alarm (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat cpu_set_alarm (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { cons_alarm_enb = val; return SCPE_OK; } -t_stat cpu_show_alarm (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat cpu_show_alarm (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { fputs (cons_alarm_enb? "alarm enabled\n": "alarm disabled\n", st); return SCPE_OK; @@ -2701,7 +2701,7 @@ return SCPE_OK; /* Virtual address translation */ -t_stat cpu_show_addr (FILE *of, UNIT *uptr, int32 val, void *desc) +t_stat cpu_show_addr (FILE *of, UNIT *uptr, int32 val, CONST void *desc) { t_stat r; char *cptr = (char *) desc; @@ -2757,7 +2757,7 @@ return; /* Set history */ -t_stat cpu_set_hist (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat cpu_set_hist (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { int32 i, lnt; t_stat r; @@ -2820,7 +2820,7 @@ return; /* Show history */ -t_stat cpu_show_hist (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat cpu_show_hist (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { int32 k, di, lnt; t_stat r; diff --git a/sigma/sigma_defs.h b/sigma/sigma_defs.h index 5cf5925f..e2f85d3b 100644 --- a/sigma/sigma_defs.h +++ b/sigma/sigma_defs.h @@ -319,7 +319,7 @@ typedef struct { #define MMC_M_CNT 0xFF #define MMC_CNT (MMC_M_CNT << MMC_V_CNT) #define MMC_V_CS 9 /* start of page */ -/* /* map 1: 2b locks, per model */ + /* map 1: 2b locks, per model */ #define MMC_M_CS2 0xFC /* map 2: access controls */ #define MMC_M_CS3 0x7FE /* map 3: 4b locks */ #define MMC_M_CS4 0xFF /* map 4: 8b relocation */ diff --git a/sigma/sigma_dp.c b/sigma/sigma_dp.c index 1f56d321..324dbaf0 100644 --- a/sigma/sigma_dp.c +++ b/sigma/sigma_dp.c @@ -158,14 +158,14 @@ type #sectors/ #surfaces/ #cylinders/ surface cylinder drive - 7242 6 20 203 =24MB - 7261 11 20 203 =45MB - 7271 6 20 406 =48MB + 7242 6 20 203 =24MB + 7261 11 20 203 =45MB + 7271 6 20 406 =48MB 3288 17 5 822 =67MB 7276 11 19 411 =86MB 7266 11 20 411 =90MB - 3282 11 19 815 =170MB - 3283 17 19 815 =263MB + 3282 11 19 815 =170MB + 3283 17 19 815 =263MB On the T3281, each drive can be a different type. The size field in each unit selects the drive capacity for each drive and thus @@ -290,11 +290,11 @@ t_bool dp_end_sec (UNIT *uptr, uint32 lnt, uint32 exp, uint32 st); int32 dp_clr_int (uint32 cidx); void dp_set_ski (uint32 cidx, uint32 un); void dp_clr_ski (uint32 cidx, uint32 un); -t_stat dp_attach (UNIT *uptr, char *cptr); -t_stat dp_set_size (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat dp_set_auto (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat dp_set_ctl (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat dp_show_ctl (FILE *st, UNIT *uptr, int32 val, void *desc); +t_stat dp_attach (UNIT *uptr, CONST char *cptr); +t_stat dp_set_size (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat dp_set_auto (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat dp_set_ctl (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat dp_show_ctl (FILE *st, UNIT *uptr, int32 val, CONST void *desc); static DP_TYPE dp_tab[] = { { DP_ENT (7242, 7240) }, @@ -776,7 +776,7 @@ switch (uptr->UCMD) { else wd = 0; dp_buf[i] = wd; /* store in buffer */ } - if (r = dp_write (uptr, da)) /* write buf, err? */ + if ((r = dp_write (uptr, da))) /* write buf, err? */ return r; if (dp_end_sec (uptr, DP_WDSC, DP_WDSC, st)) /* transfer done? */ return SCPE_OK; /* err or cont */ @@ -818,7 +818,7 @@ switch (uptr->UCMD) { chan_uen (dva); /* uend */ return SCPE_OK; } - if (r = dp_read (uptr, da)) /* read buf, error? */ + if ((r = dp_read (uptr, da))) /* read buf, error? */ return r; for (i = 0, st = 0; (i < (DP_WDSC * 4)) && (st != CHS_ZBC); i++) { st = chan_RdMemB (dva, &wd); /* read byte */ @@ -843,7 +843,7 @@ switch (uptr->UCMD) { chan_uen (dva); /* uend */ return SCPE_OK; } - if (r = dp_read (uptr, da)) /* read buf, error? */ + if ((r = dp_read (uptr, da))) /* read buf, error? */ return r; for (i = 0, st = 0; (i < DP_WDSC) && (st != CHS_ZBC); i++) { st = chan_WrMemW (dva, dp_buf[i]); /* store in mem */ @@ -1225,7 +1225,7 @@ return SCPE_OK; /* Device attach */ -t_stat dp_attach (UNIT *uptr, char *cptr) +t_stat dp_attach (UNIT *uptr, CONST char *cptr) { uint32 i, p; t_stat r; @@ -1252,7 +1252,7 @@ return SCPE_OK; /* Set drive type command validation routine */ -t_stat dp_set_size (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat dp_set_size (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { uint32 dtype = GET_DTYPE (val); uint32 cidx = uptr->UCTX; @@ -1269,7 +1269,7 @@ return SCPE_OK; /* Set unit autosize validation routine */ -t_stat dp_set_auto (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat dp_set_auto (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { uint32 cidx = uptr->UCTX; @@ -1284,7 +1284,7 @@ return SCPE_OK; /* Set controller type command validation routine */ -t_stat dp_set_ctl (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat dp_set_ctl (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { uint32 i, new_dtyp, cidx = uptr->UCTX; DP_CTX *ctx = &dp_ctx[cidx]; @@ -1320,7 +1320,7 @@ for (i = 0; i < DP_NUMDR_16B; i++) { return SCPE_OK; } -t_stat dp_show_ctl (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat dp_show_ctl (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { uint32 cidx = uptr->UCTX; diff --git a/sigma/sigma_io.c b/sigma/sigma_io.c index d7f96d52..4d85a299 100644 --- a/sigma/sigma_io.c +++ b/sigma/sigma_io.c @@ -101,8 +101,8 @@ t_bool io_init_inst (uint32 ad, uint32 rn, uint32 ch, uint32 dev, uint32 r0); uint32 io_set_status (uint32 rn, uint32 ch, uint32 dev, uint32 dvst, t_bool tdv); uint32 io_rwd_m0 (uint32 op, uint32 rn, uint32 ad); uint32 io_rwd_m1 (uint32 op, uint32 rn, uint32 ad); -t_stat io_set_eiblks (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat io_show_eiblks (FILE *st, UNIT *uptr, int32 val, void *desc); +t_stat io_set_eiblks (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat io_show_eiblks (FILE *st, UNIT *uptr, int32 val, CONST void *desc); t_stat int_reset (DEVICE *dptr); t_stat chan_reset (DEVICE *dptr); uint32 chan_new_cmd (uint32 ch, uint32 dev, uint32 clc); @@ -1043,7 +1043,7 @@ if (op == OP_RD) { /* read direct? */ } else if (QCPU_S89 && (fnc == 0x045)) { /* S89 only */ if (rn) - R[rn] = s9_marg & 0x00C00000 | /* <8,9> = margins */ + R[rn] = (s9_marg & 0x00C00000) | /* <8,9> = margins */ (QCPU_S9? 0x00100000: 0x00200000); /* S8 sets 10, S9 11 */ } else if (QCPU_S89 && (fnc == 0x049)) { /* S89 only */ @@ -1307,7 +1307,7 @@ return SCPE_OK; /* Set/show external interrupt blocks */ -t_stat io_set_eiblks (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat io_set_eiblks (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { int32 lnt; t_stat r; @@ -1322,7 +1322,7 @@ io_set_eimax (lnt); return SCPE_OK; } -t_stat io_show_eiblks (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat io_show_eiblks (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { fprintf (st, "eiblks=%d", ei_bmax); return SCPE_OK; @@ -1358,7 +1358,7 @@ return; /* Set or show number of channels */ -t_stat io_set_nchan (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat io_set_nchan (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { int32 i, num; t_stat r; @@ -1378,7 +1378,7 @@ for (i = 0; i < CHAN_N_CHAN; i++) { return SCPE_OK; } -t_stat io_show_nchan (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat io_show_nchan (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { fprintf (st, "channels=%d", chan_num); return SCPE_OK; @@ -1386,7 +1386,7 @@ return SCPE_OK; /* Set or show device channel assignment */ -t_stat io_set_dvc (UNIT* uptr, int32 val, char *cptr, void *desc) +t_stat io_set_dvc (UNIT* uptr, int32 val, CONST char *cptr, void *desc) { int32 num; DEVICE *dptr; @@ -1404,7 +1404,7 @@ dibp->dva = (dibp->dva & ~DVA_CHAN) | (num << DVA_V_CHAN); return SCPE_OK; } -t_stat io_show_dvc (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat io_show_dvc (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { DEVICE *dptr; dib_t *dibp; @@ -1418,7 +1418,7 @@ return SCPE_OK; /* Set or show device address */ -t_stat io_set_dva (UNIT* uptr, int32 val, char *cptr, void *desc) +t_stat io_set_dva (UNIT* uptr, int32 val, CONST char *cptr, void *desc) { int32 num; DEVICE *dptr; @@ -1439,7 +1439,7 @@ else dibp->dva = (dibp->dva & ~DVA_DEVSU) | ((num & DVA_M_DEVSU) << DVA_V_DEVSU) return SCPE_OK; } -t_stat io_show_dva (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat io_show_dva (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { DEVICE *dptr; dib_t *dibp; @@ -1453,7 +1453,7 @@ return SCPE_OK; /* Show channel state */ -t_stat io_show_cst (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat io_show_cst (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { DEVICE *dptr; dib_t *dibp; diff --git a/sigma/sigma_io_defs.h b/sigma/sigma_io_defs.h index f9bdf13e..6dedd093 100644 --- a/sigma/sigma_io_defs.h +++ b/sigma/sigma_io_defs.h @@ -260,17 +260,17 @@ uint32 chan_WrMemW (uint32 dva, uint32 dat); t_stat chan_reset_dev (uint32 dva); void io_sclr_req (uint32 inum, uint32 val); void io_sclr_arm (uint32 inum, uint32 val); -t_stat io_set_dvc (UNIT* uptr, int32 val, char *cptr, void *desc); -t_stat io_show_dvc (FILE *st, UNIT *uptr, int32 val, void *desc); -t_stat io_set_dva (UNIT* uptr, int32 val, char *cptr, void *desc); -t_stat io_show_dva (FILE *st, UNIT *uptr, int32 val, void *desc); -t_stat io_show_cst (FILE *st, UNIT *uptr, int32 val, void *desc); +t_stat io_set_dvc (UNIT* uptr, int32 val, CONST char *cptr, void *desc); +t_stat io_show_dvc (FILE *st, UNIT *uptr, int32 val, CONST void *desc); +t_stat io_set_dva (UNIT* uptr, int32 val, CONST char *cptr, void *desc); +t_stat io_show_dva (FILE *st, UNIT *uptr, int32 val, CONST void *desc); +t_stat io_show_cst (FILE *st, UNIT *uptr, int32 val, CONST void *desc); t_stat io_boot (int32 u, DEVICE *dptr); /* Internal real-time event scheduler */ -t_stat rtc_set_tps (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat rtc_show_tps (FILE *of, UNIT *uptr, int32 val, void *desc); +t_stat rtc_set_tps (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat rtc_show_tps (FILE *of, UNIT *uptr, int32 val, CONST void *desc); t_stat rtc_register (uint32 tm, uint32 idx, UNIT *uptr); #endif \ No newline at end of file diff --git a/sigma/sigma_lp.c b/sigma/sigma_lp.c index ceefb671..6d579adc 100644 --- a/sigma/sigma_lp.c +++ b/sigma/sigma_lp.c @@ -105,10 +105,10 @@ uint32 lp_tdv_status (void); t_stat lp_chan_err (uint32 st); t_stat lp_svc (UNIT *uptr); t_stat lp_reset (DEVICE *dptr); -t_stat lp_attach (UNIT *uptr, char *cptr); -t_stat lp_settype (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat lp_showtype (FILE *st, UNIT *uptr, int32 val, void *desc); -t_stat lp_load_cct (UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat lp_attach (UNIT *uptr, CONST char *cptr); +t_stat lp_settype (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat lp_showtype (FILE *st, UNIT *uptr, int32 val, CONST void *desc); +t_stat lp_load_cct (UNIT *uptr, int32 val, CONST char *cptr, void *desc); t_stat lp_read_cct (FILE *cfile); uint32 lp_fmt (UNIT *uptr); uint32 lp_skip (UNIT *uptr, uint32 ch); @@ -462,7 +462,7 @@ return SCPE_OK; /* Attach routine */ -t_stat lp_attach (UNIT *uptr, char *cptr) +t_stat lp_attach (UNIT *uptr, CONST char *cptr) { lp_cctp = 0; /* clear cct ptr */ lp_pass = 0; @@ -471,7 +471,7 @@ return attach_unit (uptr, cptr); /* Set handler for carriage control tape */ -t_stat lp_load_cct (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat lp_load_cct (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { FILE *cfile; t_stat r; @@ -491,7 +491,7 @@ t_stat lp_read_cct (FILE *cfile) { uint32 col, rpt, ptr, mask; uint8 cctbuf[CCT_LNT]; -char *cptr; +CONST char *cptr; t_stat r; char cbuf[CBUFSIZE], gbuf[CBUFSIZE]; @@ -529,7 +529,7 @@ return SCPE_OK; /* Set controller type */ -t_stat lp_settype (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat lp_settype (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { lp_model = val; lp_reset (&lp_dev); @@ -538,7 +538,7 @@ return SCPE_OK; /* Show controller type */ -t_stat lp_showtype (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat lp_showtype (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { fprintf (st, lp_model? "7450": "7440"); return SCPE_OK; diff --git a/sigma/sigma_mt.c b/sigma/sigma_mt.c index 3395b07d..5dfa33c1 100644 --- a/sigma/sigma_mt.c +++ b/sigma/sigma_mt.c @@ -132,7 +132,7 @@ t_stat mt_chan_err (uint32 st); t_stat mtu_svc (UNIT *uptr); t_stat mtr_svc (UNIT *uptr); t_stat mt_reset (DEVICE *dptr); -t_stat mt_attach (UNIT *uptr, char *cptr); +t_stat mt_attach (UNIT *uptr, CONST char *cptr); t_stat mt_detach (UNIT *uptr); t_stat mt_flush_buf (UNIT *uptr); t_stat mt_map_err (UNIT *uptr, t_stat r); @@ -336,12 +336,12 @@ r = SCPE_OK; switch (cmd) { /* case on command */ case MCM_SFWR: /* space forward */ - if (r = sim_tape_sprecf (uptr, &tbc)) /* spc rec fwd, err? */ + if ((r = sim_tape_sprecf (uptr, &tbc))) /* spc rec fwd, err? */ r = mt_map_err (uptr, r); /* map error */ break; case MCM_SBKR: /* space reverse */ - if (r = sim_tape_sprecr (uptr, &tbc)) /* spc rec rev, err? */ + if ((r = sim_tape_sprecr (uptr, &tbc))) /* spc rec rev, err? */ r = mt_map_err (uptr, r); /* map error */ break; @@ -360,7 +360,7 @@ switch (cmd) { /* case on command */ break; case MCM_WTM: /* write eof */ - if (r = sim_tape_wrtmk (uptr)) /* write tmk, err? */ + if ((r = sim_tape_wrtmk (uptr))) /* write tmk, err? */ r = mt_map_err (uptr, r); /* map error */ uptr->UST |= MTDV_EOF; /* set eof */ break; @@ -371,7 +371,7 @@ switch (cmd) { /* case on command */ case MCM_REW: /* rewind */ case MCM_RWI: /* rewind and int */ - if (r = sim_tape_rewind (uptr)) /* rewind */ + if ((r = sim_tape_rewind (uptr))) /* rewind */ r = mt_map_err (uptr, r); /* map error */ mt_unit[un + MT_REW].UCMD = uptr->UCMD; /* copy command */ sim_activate (uptr + MT_REW, mt_rwtime); /* sched compl */ @@ -461,7 +461,7 @@ t_stat st; if (mt_blim == 0) /* any output? */ return SCPE_OK; -if (st = sim_tape_wrrecf (uptr, mt_xb, mt_blim)) /* write, err? */ +if ((st = sim_tape_wrrecf (uptr, mt_xb, mt_blim))) /* write, err? */ return mt_map_err (uptr, st); /* map error */ return SCPE_OK; } @@ -625,7 +625,7 @@ return SCPE_OK; /* Attach routine */ -t_stat mt_attach (UNIT *uptr, char *cptr) +t_stat mt_attach (UNIT *uptr, CONST char *cptr) { t_stat r; diff --git a/sigma/sigma_pt.c b/sigma/sigma_pt.c index f5507f6b..cbda3052 100644 --- a/sigma/sigma_pt.c +++ b/sigma/sigma_pt.c @@ -1,6 +1,6 @@ /* sigma_pt.c: Sigma 7060 paper tape reader/punch - Copyright (c) 2007-2008, Robert M. Supnik + Copyright (c) 2007-2018, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -24,6 +24,8 @@ in this Software without prior written authorization from Robert M Supnik. pt 7060 paper-tape reader/punch + + 02-Jun-2018 RMS Defanged clang signed/unsigned whining (Mark Pizzolato) */ #include "sigma_io_defs.h" @@ -61,7 +63,7 @@ uint32 pt_tdv_status (void); t_stat pt_chan_err (uint32 st); t_stat pt_svc (UNIT *uptr); t_stat pt_reset (DEVICE *dptr); -t_stat pt_attach (UNIT *uptr, char *cptr); +t_stat pt_attach (UNIT *uptr, CONST char *cptr); /* PT data structures @@ -158,7 +160,7 @@ return 0; t_stat pt_svc (UNIT *uptr) { int32 c; -uint32 cmd; +uint32 uc, cmd; uint32 st; switch (pt_cmd) { /* case on state */ @@ -196,7 +198,7 @@ switch (pt_cmd) { /* case on state */ if (c != 0) /* leader done? */ ptr_nzc = 1; /* set flag */ if ((pt_cmd == PTS_READI) || ptr_nzc) { - st = chan_WrMemB (pt_dib.dva, c); /* write to memory */ + st = chan_WrMemB (pt_dib.dva, ((uint32) c));/* write to memory */ if (CHS_IFERR (st)) /* channel error? */ return pt_chan_err (st); if (st == CHS_ZBC) /* bc == 0? */ @@ -208,10 +210,10 @@ switch (pt_cmd) { /* case on state */ sim_activate (uptr, pt_unit[PTP].wait); /* continue thread */ if ((pt_unit[PTP].flags & UNIT_ATT) == 0) /* not attached? */ return ptp_stopioe? SCPE_UNATT: SCPE_OK; - st = chan_RdMemB (pt_dib.dva, &c); /* read from channel */ + st = chan_RdMemB (pt_dib.dva, &uc); /* read from channel */ if (CHS_IFERR (st)) /* channel error? */ return pt_chan_err (st); - if (putc (c, pt_unit[PTP].fileref) == EOF) { + if (putc (((int32) uc), pt_unit[PTP].fileref) == EOF) { perror ("PTP I/O error"); clearerr (pt_unit[PTP].fileref); chan_set_chf (pt_dib.dva, CHF_XMDE); /* data error */ @@ -286,7 +288,7 @@ return SCPE_OK; /* Attach routine */ -t_stat pt_attach (UNIT *uptr, char *cptr) +t_stat pt_attach (UNIT *uptr, CONST char *cptr) { t_stat st; diff --git a/sigma/sigma_rad.c b/sigma/sigma_rad.c index 1b904a44..4c14ad31 100644 --- a/sigma/sigma_rad.c +++ b/sigma/sigma_rad.c @@ -124,8 +124,8 @@ uint32 rad_tdv_status (uint32 un); t_stat rad_chan_err (uint32 st); t_stat rad_svc (UNIT *uptr); t_stat rad_reset (DEVICE *dptr); -t_stat rad_settype (UNIT *uptr, int32 val, char *cptr, void *desc); -t_stat rad_showtype (FILE *st, UNIT *uptr, int32 val, void *desc); +t_stat rad_settype (UNIT *uptr, int32 val, CONST char *cptr, void *desc); +t_stat rad_showtype (FILE *st, UNIT *uptr, int32 val, CONST void *desc); t_bool rad_inv_ad (uint32 *da); t_bool rad_inc_ad (void); t_bool rad_end_sec (UNIT *uptr, uint32 lnt, uint32 exp, uint32 st); @@ -508,7 +508,7 @@ return SCPE_OK; /* Set controller type */ -t_stat rad_settype (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat rad_settype (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { uint32 i; @@ -525,7 +525,7 @@ return SCPE_OK; /* Show controller type */ -t_stat rad_showtype (FILE *st, UNIT *uptr, int32 val, void *desc) +t_stat rad_showtype (FILE *st, UNIT *uptr, int32 val, CONST void *desc) { fprintf (st, (rad_model == RAD_7212)? "7211/7212": "7231/7232"); return SCPE_OK; diff --git a/sigma/sigma_rtc.c b/sigma/sigma_rtc.c index 1a97affc..08c13284 100644 --- a/sigma/sigma_rtc.c +++ b/sigma/sigma_rtc.c @@ -76,7 +76,7 @@ static rtcdef_t rtc_tab[RTC_NUM_HZ] = { t_stat rtc_svc (UNIT *uptr); t_stat rtc_cntr_svc (UNIT *uptr); t_stat rtc_reset (DEVICE *dptr); -t_stat rtc_show_events (FILE *of, UNIT *uptr, int32 val, void *desc); +t_stat rtc_show_events (FILE *of, UNIT *uptr, int32 val, CONST void *desc); /* Clock data structures @@ -186,7 +186,7 @@ return SCPE_OK; /* Set timer ticks */ -t_stat rtc_set_tps (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat rtc_set_tps (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { uint32 newval, i; t_stat r; @@ -214,7 +214,7 @@ return SCPE_ARG; /* Show timer ticks */ -t_stat rtc_show_tps (FILE *of, UNIT *uptr, int32 val, void *desc) +t_stat rtc_show_tps (FILE *of, UNIT *uptr, int32 val, CONST void *desc) { uint32 idx; @@ -255,7 +255,7 @@ return SCPE_OK; /* Show events */ -t_stat rtc_show_events (FILE *of, UNIT *uptr, int32 val, void *desc) +t_stat rtc_show_events (FILE *of, UNIT *uptr, int32 val, CONST void *desc) { uint32 i; diff --git a/sigma/sigma_sys.c b/sigma/sigma_sys.c index 9a856dd8..95f5e8d2 100644 --- a/sigma/sigma_sys.c +++ b/sigma/sigma_sys.c @@ -49,7 +49,7 @@ extern uint32 *M; extern UNIT cpu_unit; t_stat fprint_sym_m (FILE *of, uint32 inst); -t_stat parse_sym_m (char *cptr, t_value *val); +t_stat parse_sym_m (CONST char *cptr, t_value *val); void fprint_ebcdic (FILE *of, uint32 c); extern t_stat lp_read_cct (FILE *cfile); @@ -168,7 +168,7 @@ uint8 ebcdic_to_ascii[256] = { /* Binary loader */ -t_stat sim_load (FILE *fileref, char *cptr, char *fnam, int flag) +t_stat sim_load (FILE *fileref, CONST char *cptr, CONST char *fnam, int flag) { return lp_read_cct (fileref); } @@ -375,7 +375,7 @@ if (sw & SWMASK ('C')) { /* char format? */ if (sw & SWMASK ('A')) { /* ASCII? */ sc = 24 - ((addr & 0x3) * 8); /* shift count */ c = (inst >> sc) & 0x7F; - fprintf (of, "%c", FMTASC (c)); + fprintf (of, FMTASC (c)); return 0; } if (sw & SWMASK ('E')) { /* EBCDIC? */ @@ -464,7 +464,7 @@ return; status = error status */ -t_stat parse_sym (char *cptr, t_addr addr, UNIT *uptr, t_value *val, int32 sw) +t_stat parse_sym (CONST char *cptr, t_addr addr, UNIT *uptr, t_value *val, int32 sw) { t_value num; uint32 i, sc, rdx, c; @@ -539,7 +539,7 @@ if (r != SCPE_OK) return 0; } -t_stat parse_sym_m (char *cptr, t_value *val) +t_stat parse_sym_m (CONST char *cptr, t_value *val) { uint32 i, sgn; t_stat r; @@ -547,7 +547,7 @@ char *sep; char gbuf[CBUFSIZE]; cptr = get_glyph (cptr, gbuf, 0); /* get opcode+reg*/ -if (sep = strchr (gbuf, ',')) /* , in middle? */ +if ((sep = strchr (gbuf, ','))) /* , in middle? */ *sep++ = 0; /* split strings */ for (i = 0; opcode[i] != NULL; i++) { /* loop thru ops */ if (strcmp (opcode[i], gbuf) == 0) { /* string match? */ @@ -583,7 +583,7 @@ for (i = 0; opcode[i] != NULL; i++) { /* loop thru ops */ sgn = 1; else sgn = 0; /* else + */ cptr = get_glyph (cptr, gbuf, 0); /* get rest */ - if (sep = strchr (gbuf, ',')) /* , in middle? */ + if ((sep = strchr (gbuf, ','))) /* , in middle? */ *sep++ = 0; /* split strings */ ad = get_uint (gbuf, 16, mask, &r); if (r != SCPE_OK) diff --git a/sigma/sigma_tt.c b/sigma/sigma_tt.c index 97d32d3c..1c357d2a 100644 --- a/sigma/sigma_tt.c +++ b/sigma/sigma_tt.c @@ -1,6 +1,6 @@ /* sigma_tt.c: Sigma 7012 console teletype - Copyright (c) 2007-2008, Robert M. Supnik + Copyright (c) 2007-2018, Robert M. Supnik Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -30,6 +30,8 @@ CR input, mapped to NEWLINE and echoes CR-LF ^H input, mapped to EOM and not echoed HT input or output, simulates tabbing with fixed 8 character stops + + 02-Jun-2018 RMS Defanged clang signed/unsigned whining (Mark Pizzolato) */ #include "sigma_io_defs.h" @@ -71,7 +73,7 @@ t_stat tti_rtc_svc (uint32 tm); t_stat tti_svc (UNIT *uptr); t_stat tto_svc (UNIT *uptr); t_stat tt_reset (DEVICE *dptr); -t_stat tt_set_mode (UNIT *uptr, int32 val, char *cptr, void *desc); +t_stat tt_set_mode (UNIT *uptr, int32 val, CONST char *cptr, void *desc); void tto_echo (int32 c); extern t_stat io_set_pint (void); @@ -214,8 +216,8 @@ return SCPE_OK; t_stat tto_svc (UNIT *uptr) { -int32 c, cmd; -uint32 st; +int32 c; +uint32 uc, cmd, st; switch (tt_cmd) { /* case on state */ @@ -231,10 +233,10 @@ switch (tt_cmd) { /* case on state */ break; case TTS_WRITE: /* char output */ - st = chan_RdMemB (tt_dib.dva, &c); /* get char */ + st = chan_RdMemB (tt_dib.dva, &uc); /* get char */ if (CHS_IFERR (st)) /* channel error? */ return tt_chan_err (st); - c = ebcdic_to_ascii[c & 0xFF]; /* convert to ASCII */ + c = ebcdic_to_ascii[uc & 0xFF]; /* convert to ASCII */ tto_echo (c); /* echo character */ sim_activate (uptr, uptr->wait); /* continue thread */ if (st == CHS_ZBC) /* st = zbc? */ @@ -321,7 +323,7 @@ return SCPE_OK; /* Make mode flags uniform */ -t_stat tt_set_mode (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat tt_set_mode (UNIT *uptr, int32 val, CONST char *cptr, void *desc) { tt_unit[TTO].flags = (tt_unit[TTO].flags & ~TT_MODE) | val; if (val == TT_MODE_7P)