SIMH 3.9-0 released!

And among the changes …


  • added *nix READLINE support (Mark Pizzolato)
  • fixed handling of DO with no arguments (Dave Bryan)
  • fixed “SHOW DEVICE” with only one enabled unit (Dave Bryan)
  • clarified some help messages (Mark Pizzolato)
  • added “SHOW SHOW” and “SHOW <dev> SHOW” commands (Mark Pizzolato)
  • fixed bug in deposit stride for numeric input (John Dundas)


  • added support for BREAK key on Windows (Mark Pizzolato)


  • major revision (Dave Hittner and Mark Pizzolato)
  • fixed array overrun which caused SEGFAULT on hosts with many devices which libpcap can access.
  • fixed duplicate MAC address detection to work reliably on switch connected LANs


  • made telnet option negotiation more reliable, VAX simulator now works with PuTTY as console (Mark Pizzolato)


  • fixed bugs in MPY, DIV introduced in 3.8-1 (from Theo Engel)
  • fixed bugs in double precision, normalization, SC (from Adrian Wise)
  • fixed XR behavior (from Adrian Wise)

hp2100 all peripherals (Dave Bryan):

  • Changed I/O signal handlers for newly revised signal model
  • Deprecated DEVNO modifier in favor of SC

hp2100_cpu.c (Dave Bryan):

  • Minor speedup in “is_mapped”
  • Added casts to cpu_mod, dmasio, dmapio, cpu_reset, dma_reset
  • Fixed I/O return status bug for DMA cycles
  • Failed I/O cycles now stop on failing instruction
  • Revised DMA for new multi-card paradigm
  • Consolidated DMA reset routines
  • DMA channels renamed from 0,1 to 1,2 to match documentation
  • Changed I/O instructions, handlers, and DMA for revised signal model
  • Changed I/O dispatch table to use DIB pointers
  • Removed DMA latency counter
  • Fixed DMA requests to enable stealing every cycle
  • Fixed DMA priority for channel 1 over channel 2
  • Corrected comments for “cpu_set_idle”


  • Changed declarations for VMS compiler

hp2100_cpu0.c (Dave Bryan):

  • Removed DS note regarding PIF card (is now implemented)

hp2100_cpu4.c (Dave Bryan):

  • Added OPSIZE casts to fp_accum calls in .FPWR/.TPWR

hp2100_cpu5.c (Dave Bryan):

  • Added sign extension for dim count in “cpu_ema_resolve”
  • Eliminated unused variable in “cpu_ema_vset”

hp2100_cpu6.c (Dave Bryan):

  • DMA channels renamed from 0,1 to 1,2 to match documentation

hp2100_cpu7.c (Dave Bryan):

  • Corrected “opsize” parameter type in vis_abs

hp2100_defs.h (Dave Bryan):

  • Added hp_setsc, hp_showsc functions to support SC modifier
  • DMA channels renamed from 0,1 to 1,2 to match documentation
  • Revised I/O signal enum values for concurrent signals
  • Revised I/O macros for new signal handling
  • Added DA and DC device select code assignments

hp2100_di.c, hp2100_di.h (Dave Bryan):

  • Implemented 12821A HP-IB Disc Interface

hp2100_di_da.c (Dave Bryan):

  • Implemented 7906H/20H/25H ICD disc drives

hp2100_dp.c (Dave Bryan):

  • Added CNTLR_TYPE cast to dp_settype

hp2100_ds.c (Dave Bryan):

  • Rewritten to use the MAC/ICD disc controller library
  • ioIOO now notifies controller service of parameter output
  • Corrected SRQ generation and FIFO under/overrun detection
  • Corrected Clear command to conform to the hardware
  • Fixed Request Status to return Unit Unavailable if illegal
  • Seek and Cold Load Read now Seek Check if seek in progress
  • Remodeled command wait for seek completion
  • Corrected status returns for disabled drive, auto-seek beyond drive limits, Request Sector Address and Wakeup with invalid or offline unit
  • Address verification reenabled if auto-seek during
  • Read Without Verify

hp2100_fp1.c (Dave Bryan):

  • Added missing precision on constant “one” in fp_trun
  • Completed the comments for divide; no code changes

hp2100_ipl.c (Dave Bryan):

  • Added CARD_INDEX casts to dib.card_index
  • A failed STC may now be retried
  • Consolidated reporting of consecutive CRS signals
  • Revised for new multi-card paradigm

hp2100_lps.c (Dave Bryan):

  • Revised detection of CLC at last DMA cycle
  • Corrected 12566B (DIAG mode) jumper settings

hp2100_ms.c (Dave Bryan):

  • Added CNTLR_TYPE cast to ms_settype

hp2100_mt.c (Dave Bryan):

  • Removed redundant MTAB_VUN from “format” MTAB entry
  • Fixed command scanning error in mtcio ioIOO handler

hp2100_stddev.c (Dave Bryan):

  • Add TBG as a logical name for the CLK device

hp2100_sys.c (Dave Bryan):

  • Deprecated DEVNO in favor of SC
  • Added hp_setsc, hp_showsc functions to support SC modifier
  • Added DA and dummy DC devices
  • DMA channels renamed from 0,1 to 1,2 to match documentation
  • Changed DIB access for revised signal model

hp_disclib.c, hp_disclib.h (Dave Bryan)

  • Created MAC/ICD disc controller library


  • fixed read stacker operation in column binary mode
  • fixed punch stacker operation (Van Snyder)


  • fixed TT_GET_MODE test to use TTUF_MODE_x (Michael Bloom)
  • revised to use clock coscheduling

id_tt.c, id_ttc.p:

  • revised to use clock coscheduling


  • added clock coscheduling routine


  • reverted multiple tape indicator implementation
  • fixed EOT indicator test not to clear indicator (Van Snyder)
  • fixed divide not to clear word marks in quotient (Van Snyder)
  • revised divide algorithm (Van Snyder)


  • reverted multiple tape indicator implementation
  • fixed END indicator test not to clear indicator (Van Snyder)
  • fixed backspace over tapemark not to set EOR (Van Snyder)
  • added no rewind option (Van Snyder)


  • fixed misuse of & instead of && in decode (Peter Schorn)


  • fixed misuse of & instead of && in Ea_ch (Michael Bloom)


  • fixed unitialized variable in tty output service (Michael Bloom)


  • revised to use clock coscheduling


  • fixed priority of PIRQ vs IO; added INT_INTERNALn


  • fixed Qbus interrupts to treat all IO devices (except clock) as BR4
  • fixed order of int_internal (Jordi Guillaumes i Pons)


  • fixed bug in updating mem addr extension (Peter Schorn)


  • fixed bug in read header (Walter F Mueller)


  • added debug support


  • added RD32 support

pdp11_tq.c: (Mark Pizzolato)

  • set UNIT_SXC flag when a tape mark is encountered during forward motion read operations
  • fixed logic which clears UNIT_SXC to check command modifier
  • added CMF_WR flag to tq_cmf entry for OP_WTM
  • made non-immediate rewind positioning operations take 2 seconds
  • added UNIT_IDLE flag to tq units.
  • fixed debug output of tape file positions when they are 64b
  • added more debug output after positioning operations
  • added textual display of the command being performed
  • fixed comments about register addresses


  • fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)


  • fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)

pdp11_vh.c: (Mark Pizzolato)

  • fixed SET VH LINES=n to correctly adjust the number of lines available to be 8, 16, 24, or 32.
  • fixed performance issue avoiding redundant polling

pdp11_xq.c: (Mark Pizzolato)

  • Fixed missing information from save/restore which caused operations to not complete correctly after a restore until the OS reset the controller.
  • Added address conflict check during attach.
  • Fixed loopback processing to correctly handle forward packets.
  • Fixed interrupt dispatch issue which caused delivered packets (in and out) to sometimes not interrupt the CPU after processing.
  • Fixed the SCP visibile SA registers to always display the ROM mac address, even after it is changed by SET XQ MAC=.
  • Added changes so that the Console DELQA diagnostic (>>>TEST 82) will succeed.
  • Added DELQA-T (aka DELQA Plus) device emulation support.
  • Added dropped frame statistics to record when the receiver discards received packets due to the receiver being disabled, or due to the XQ device’s packet receive queue being full.
  • Fixed bug in receive processing when we’re not polling. This could cause receive processing to never be activated again if we don’t read all available packets via eth_read each time we get the opportunity.
  • Added the ability to Coalesce received packet interrupts. This is enabled by SET XQ POLL=DELAY=nnn where nnn is a number of microseconds to delay the triggering of an interrupt when a packet is received.
  • Added SET XQ POLL=DISABLE (aka SET XQ POLL=0) to operate without polling for packet read completion.
  • Changed the sanity and id timer mechanisms to use a separate timer unit so that transmit and recieve activities can be dealt with by the normal xq_svc routine.
  • Dynamically determine the timer polling rate based on the calibrated tmr_poll and clk_tps values of the simulator.
  • Enabled the SET XQ POLL to be meaningful if the simulator currently doesn’t support idling.
  • Changed xq_debug_setup to use sim_debug instead of printf so that all debug output goes to the same place.
  • Restored the call to xq_svc after all successful calls to eth_write to allow receive processing to happen before the next event service time. This must have been inadvertently commented out while other things were being tested.

pdp11_xu.c: (Mark Pizzolato)

  • Added SHOW XU FILTERS modifier (Dave Hittner)
  • Corrected SELFTEST command, enabling use by VMS 3.7, VMS 4.7, and Ultrix 1.1 (Dave Hittner)
  • Added address conflict check during attach.
  • Added loopback processing support
  • Fixed the fact that no broadcast packets were received by the DEUNA
  • Fixed transmitted packets to have the correct source MAC address.
  • Fixed incorrect address filter setting calling eth_filter().


  • added clock coscheduling
  • revised TTI to use clock coscheduling and to fix perpetual CAF bug


  • revised to use clock coscheduling


  • added clock coscheduling

pdp8_fpp.c: (Rick Murphy)

  • many bug fixes; now functional


  • revised to use clock coscheduling and to fix perpetual CAF bug


  • revised to use clock cosheduling


  • added link to FPP


  • fixed SDLC to clear AC (Dave Gesswein)


  • fixed bug in scan function decode (Peter Schorn)


  • revised idle design (Mark Pizzolato)
  • fixed bug in SET CPU IDLE
  • fixed failure to clear PSL<tp> in BPT, XFC


  • revised idle design Mark Pizzolato)
  • added VEC_QMODE test in interrupt handler


  • fixed integer overflow bug in EMODx (Camiel Vanderhoeven)
  • fixed POLYx normalizing before add mask bug (Camiel Vanderhoeven)
  • fixed missing arguments in 32b floating add (Mark Pizzolato)

vax_octa.c (Camiel Vanderhoeven)

  • fixed integer overflow bug in EMODH
  • fixed POLYH normalizing before add mask bug


  • revised to use clock coscheduling


  • fixed t_addr printouts for 64b big-endian systems (Mark Pizzolato)


  • added power clear call to boot routine (Mark Pizzolato)


  • added AUTORESTART switch support (Mark Pizzolato)


  • added REBOOT support (Mark Pizzolato)
  • revised to use clock coscheduling


  • moved all Qbus devices to BR4; deleted RP definitions


As always you can download it from the homepage, or from sourceforge.

This entry was posted in SIMH by neozeed. Bookmark the permalink.

About neozeed

What is there to tell? I’ve loved UNIX like things since I was first exposed to QNX in highschool (we had the Unisys ICONS!), and spent the better time of my teenage years trying to get my own UNIX… I should have bought Coherent in retrospect.. Anyways latched onto Linux in 1992, and then got some old BSD admin books and have been hooked on the VAX BSD & other big/ancient things since…!

Leave a Reply

Your email address will not be published.

Notify me of followup comments via e-mail. You can also subscribe without commenting.