1) In s100_ss1.c
Mode and Count are three element arrays,  ss1_tc itself isn't.
Shouldn't:
    { HRDATA (T0_MODE,    ss1_tc[0].mode,                     3), },
    { HRDATA (T0_COUNT,   ss1_tc[0].count,                    16), },
    { HRDATA (T1_MODE,    ss1_tc[1].mode,                     3), },
    { HRDATA (T1_COUNT,   ss1_tc[1].count,                    16), },
    { HRDATA (T2_MODE,    ss1_tc[2].mode,                     3), },
    { HRDATA (T2_COUNT,   ss1_tc[2].count,                    16), },

be:
   { HRDATA (T0_MODE,    ss1_tc[0].mode[0],                     3), },
    { HRDATA (T0_COUNT,   ss1_tc[0].count[0],                    16), },
    { HRDATA (T1_MODE,    ss1_tc[0].mode[1],                     3), },
    { HRDATA (T1_COUNT,   ss1_tc[0].count[1],                    16), },
    { HRDATA (T2_MODE,    ss1_tc[0].mode[2],                     3), },
    { HRDATA (T2_COUNT,   ss1_tc[0].count[2],                    16), },

2) In the Interdata routines pasi_svc(), paso_svc(), ttpi_svc(), and ttpo_svc(), there are conditionals having the form:
      if (TT_GET_MODE (X) == TT_MODE_8B)
and
      if (TT_GET_MODE (X) != TT_MODE_8B)

which are always false and true respectively.

This is because TT_GET_MODE(anything) evaluates to (anything & 0x3)
and TT_MODE_8B evaluates to 0x10000,
 so the tests become (X & 0x3 ) != 0x10000, or the inverse.

3) There appears to be a memory leak in xq_attach(): tcptr is malloced but not freed if the subsequent malloc(sizeof(ETH_DEV)) fails. The same kind of leak also appears to be the present in xu_attach().

4) In  Ea_ch() in pdp1_cpu.c: For the test
    if (rm & !sbs_act & ((MB & 0607777) == 0607777))
Is it really intended to use a boolean value with a bitwise operator?
( should ~ have been used instead of !, or perhaps parenthesis added to make it clearer?)

5) In pif_io(), in HP2100/hp2100_pif.c
At the line
       setIRQ (select_code, !pif_control & pif_flag & pif_flagbuf);
Is it really intended to use a boolean value with a bitwise operator?
(should ~ have been used instead of !, or perhaps parenthesis added to make it clearer?)

6) In pdp1_stddev.c, in tto_svc (), stack variable 'c' can be tested without being initialized. There's only a 1 in 256 chance of it doing the wrong thing, but it should still be initialized.

7) In s3_cd.c,  cdr_svc(), testing s2sel seems meaningless.


8) The printf just before the end of load_cr_boot() in ibm1130_cr.c should probably either contain a %s, or not use a format at all.

9) At line 98 in I1401/i1401_iq.c, there is an awful lot of code that won't get executed in case BCD_R because it starts with a return that is unconditional because the previous line had been commented out.

_______________________________________________
Simh mailing list
[email protected]
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to