<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>On 31-Jul-18 01:31, Jeremy Begg wrote:<br>
    </p>
    <blockquote type="cite"
      cite="mid:01QVIYSPMX180005LZ@haven.vsm.com.au"><br>
      <pre wrap="">The license wouldn't be an issue if the SET CPU MODEL command worked.
</pre>
    </blockquote>
    It looks as though it works - but not as you (or I) expect.  It
    defines the SimH model - which is mostly I/O devices.<br>
    <br>
    Your issue is with the SYS_TYPE register, which lives at location
    0x40004 in I/O space of MicroVAX systems.<br>
    This is the ROM - SimH just uses what is loaded.  It's included in
    the ROM checksum.<br>
    <br>
    SET CPU MODEL should probably update the register, which has the
    format:<br>
    <31:24>SYS_TYPE <23:16>REV <15:8>SYSDEP
    <7:0>LicenseID<br>
    SYS_TYPE qualifies the SID - the codes are re-used.<br>
    <br>
    I don't have the complete list of SYS_TYPE codes, but a few are:<br>
    UVAX:<br>
    <br>
    1 UV2, 4 Uv2000/vs2000, 5 VAXterm, 6 9000 console<br>
    <br>
    CVAX:<br>
    <br>
    1: uvax(35/36/33/34/38/3900), Vaxserver(35/26/33/34/38/3900),
    Vaxstation(32/3500)<br>
    2: VAX 62x0, 63x0<br>
    3: Vaxstation( 3520/40)<br>
    4: vaxstation 3100<br>
    7: FT5200<br>
    <br>
    Rev is 1-based.<br>
    <br>
    <0> is set for a timesharing system.<br>
    <1> is set for a single user system.<br>
    <br>
    It would have to recompute the ROM checksum.<br>
    <br>
    You should probably examine the register on your physical system - I
    would expect that NVAX either added codes to the CVAX set, or
    started over with a new enum.  I don't remember which.<br>
    <br>
    <blockquote type="cite"
      cite="mid:01QVIYSPMX180005LZ@haven.vsm.com.au">
      <pre wrap="">
I recall some of that discussion.  I think the SSH server is having to do a
whole lot of math to come up with sufficient entropy and no doubt that's a
lot of floating point.
</pre>
    </blockquote>
    It would be odd if it was FP - crypto is generally multi-precision
    integer.<br>
    <br>
    Entropy doesn't come from math.  It comes from I/O, timers, or these
    days, from a hardware noise source.<br>
    There is some math involved in whitening - but it's mostly shifts
    & xors.  Not FP.<br>
    SimH is more predictable than real hardware.<br>
    <br>
    You can probably settle this by enabling CPU history, and randomly
    pausing emulation and dumping the buffer while you are waiting.<br>
    <br>
    <blockquote type="cite"
      cite="mid:01QVIYSPMX180005LZ@haven.vsm.com.au">
      <pre wrap="">
It occurred to me that the emulation I'm running is a -3900 series machine
which if memory serves, did not have an FPU.  Meaning all those VAX floating
point operations are being emulated twice -- once by the VAX and once by
SIMH.  Is that correct?  If so I wonder if the emaulation could be tweaked
to behave as if the emulated machine has an FPU.
</pre>
    </blockquote>
    The only VAX without an FPU was the early 780, which was ECOd.<br>
    There are some emulation options:<br>
    <br>
    H-float is optional, and emulated when absent.<br>
    <br>
packed-decimal[movp,cmpp3,cmpp4,addp4,addp6,subp4,subp6,cvtlp/pl,cvtpt/tp/ps/sp,sashp,mulp,divp)
    is optional, and emulated (mostly by microvaxes).<br>
    <br>
    Later processors (after 86) could (and did) omit 2 groups of
    instructions:<br>
      MATCHC,MOVTC,MOVTUC,CRC and EDITPC<br>
      ACB[FDGH}, emod[FDGH] and POLY[FDGH]<br>
    <br>
    And, of course the entire vector instruction set (I was responsible
    for that emulator).<br>
    <br>
    Although in theory these were included or emulated as a group, some
    implementations were selective.  VMS does not rely on model-specific
    knowledge: it checks each opocode and loads the emulator if any
    instruction is emulated.  Those that are implemented never reach it.<br>
    <br>
    Last I knew, SimH implements all instructions on all models (except
    vectors :-().<br>
    <br>
    SimH's design goal is correctness, not particularly speed.  Except
    for the -10, all run on a 32-bit platform.<br>
    <br>
    FWIW: there's room for optimization by promoting some internal
    representations to 64-bits where available.  But this is a big job,
    and would require a lot of validation.  Feel free to volunteer...<br>
    <br>
    I'm not sure where SimH stands on compiler optimizations - you can
    always try compiling with the highest optimization level your
    compiler supports.  But you may have to report some bugs...<br>
    <br>
    <br>
  </body>
</html>