[Simh] suspicious code in pdp11_rl.c

Walter F.J. Mueller w.f.j.mueller at retro11.de
Sat Mar 7 12:37:34 EST 2015


Hi,

I've a FPGA implementation of a PDP-11/70, see
   http://opencores.org/project,w11
and just added a RL11 interface. As always, the simh sources
are used as reference 'behavioral model'. So I had a close look
at pdp11_rl.c and stumbled over the lines

   t_stat rl_wr (int32 data, int32 PA, int32 access) {
   ...
      switch (GET_FUNC (rlcs)) {
   ...
      default:        /* data transfer */
        if ((uptr->flags & (UNIT_DIS|UNIT_OFFL)) ||
            (!(uptr->flags & UNIT_ATT))) {
          rl_set_done (RLCS_INCMP);
          break;
      }

This checks for all data transfer commands whether the unit
is enabled, online and attached, and if not aborts the command
with an RLCS_INCMP error. In all other error aborts a call like

   rl_set_done (RLCS_ERR | RLCS_INCMP);

is used, so the RLCS_ERR bit is also set. The RL11 documentation
clearly states, that this bit is simply the or of drive error
and controller error bits. So I'd assume it should always be
set when the error field is set, with RLCS_INCMP or otherwise.

Question:
   - was this an oversight, which went undetected so far ?
   - or does this model observed (in real hardware) behavior ?


		With best regards, 	Walter


More information about the Simh mailing list