Generate a PDP11 emulation test-set using simh.
Find a file
Mark Pizzolato 07f99bb8c3 HP3000, HP2100: Updated simulators from Dave Bryan
- This release of the HP 3000 simulator adds the following device simulation:

  - 30209A Line Printer Controller with One 2607/13/17/18 Line Printer

The simulation supports the use of custom VFU tape images, as well as the
built-in HP-standard VFU tape.  The simulated device name is "LP".  The full set
of configurable options is detailed in a new section of the HP 3000 Simulator
User's Guide.

In addition, the preconfigured MPE-V/R disc image has been updated to add the
following features:

  - The MPE cold load command files attach the line printer to the "lp.txt"
    output file and specify the "-n" option to clear the file before use.

  - Preinstalled User-Defined Commands (UDCs) provide access to the COBOL 74
    compiler with the MPE-V/E :COBOLII, :COBOLIIPREP, and :COBOLIIGO commands,
    and to the COBOL 85 compiler with :COBOLIIX, :COBOLIIXPREP, and :COBOLIIXGO.
    However, see the implementation note below.

--------------------
Implementation Notes
--------------------

 - MPE requires a line printer, so it is recommended that the MPE startup
   simulator command file include an ATTACH LP <filename> command to load paper
   into the printer before cold loading.  If the printer is not attached, it
   will appear to MPE to be out of paper.

 - The line printer terminates each print line with an HP-standard CR/LF pair.
   If the output file is to be retained as a text file on a Unix system, removal
   of the carriage returns, e.g., via the "dos2unix" utility, may be desirable.

 - The simulator currently does not provide the HP 32234A COBOL II firmware
   instructions, so programs generated by the COBOLII compiler will abort at run
   time with an "ILLEGAL INSTRUCTION" error.  Programs generated by the COBOL
   compiler do not use these instructions and therefore are not affected.

----------
Bugs Fixed
----------

  1. PROBLEM:  The effective address of a byte pointer with a negative index is
     calculated incorrectly.

     VERSION:  Release 1

     OBSERVATION:  Defining a :WELCOME message in MPE appears to work, but when
     the next logon attempts to print the message, an infinite number of CRLFs
     are printed instead.

     CAUSE:  The welcome message is stored in an extra data segment.  The format
     for each message line is a line length stored in the lower byte of the word
     preceding the message string.  The code defines BYTE POINTER NEXTLINE and
     points NEXTLINE to the first message character.  The line length is set
     with NEXTLINE(-1) := IOCOUNT.  This generates a LOAD <IOCOUNT> ; LDXN 1 ;
     STB <NEXTLINE>,I,X sequence.

     In the "cpu_ea" routine, the indexing adds the X register value (-1) to the
     byte pointer (NEXTLINE).  This causes an overflow that is not masked to 16
     bits.  For a word access, this displacement is added to the base register
     and then masked to 16 bits, which gives the correct value.  However, for
     byte accesses, the displacement is divided by 2 and then added, and the sum
     is masked.  Dividing by 2 shifts the overflow bit into the MSB, causing the
     addition result to be off by 32K.  The STB goes to the wrong location, the
     original zero in the length byte location is retained, and when the welcome
     message is printed, a zero-length line is printed, and the byte pointer is
     incremented by zero, so the null line is printed forever.

     RESOLUTION:  Modify "cpu_ea" (hp3000_cpu.c) to mask indexed displacements
     to 16 bits after adding the X register value.

     STATUS:  Fixed in Release 2.

  2. PROBLEM:  An SMSK instruction may clear the interrupt mask flip-flop of a
     device that specifies that it is should be "always enabled."

     VERSION:  Release 1

     OBSERVATION:  If the TOS word is zero, an SMSK instruction will clear the
     interrupt mask flip-flop of a device whose mask jumper is set to "E"
     (always enabled).

     CAUSE:  In response to a DSETMASK signal, device interfaces set their
     interrupt mask flip-flops by "anding" the incoming data word with the
     interrupt mask jumper setting.  The jumper setting value for "always
     enabled" is %177777, which sets the mask flip-flop in all cases, except
     when the data word is zero.

     RESOLUTION:  Modify hp3000_atc.c, hp3000_ds.c, and hp3000_ms.c to set their
     mask flip-flops unconditionally if the jumper setting is "E".

     STATUS:  Fixed in Release 2.

  3. PROBLEM:  The "SET <dev> INTMASK=<n>" command sets the wrong bit in the
     device interface's interrupt mask jumper setting.

     VERSION:  Release 1

     OBSERVATION:  The interrupt mask jumper on a device interface is set by
     specifying the mask bit number in a "SET <dev> INTMASK=<n>" command.  This
     sets a bit in the device's interrupt mask jumper word corresponding to the
     bit number requested.  However, the bit numbering is incorrect; setting the
     jumper for bit 15, for example, sets bit 0 of the jumper word.  Therefore,
     the interface's mask flip-flop is not set as expected when an SMSK
     instruction is executed.

     CAUSE:  The bit numbers were counted from the wrong end of the word.

     RESOLUTION:  Modify "hp_set_dib" and "hp_show_dib" (hp3000_sys.c) to number
     the bits from the MSB instead of the LSB.

     STATUS:  Fixed in Release 2.

  4. PROBLEM:  The Multiplexer Channel is not generating the ACKSR signal
     correctly.

     VERSION:  Release 1

     OBSERVATION:  The line printer controller hangs when an SIO chained write
     is performed.  The first programmed write completes normally, but the
     second does not start.  The channel is waiting for a service request that
     does not occur.

     CAUSE:  The service request from the last write of the first block transfer
     is being cleared by an ACKSR generated by the Multiplexer Channel when it
     performs the IOCW fetch in State A for the second write request.  The
     channel should omit this ACKSR when the previous I/O order was a chained
     read or write.  However, the simulator is testing the order just fetched
     (Write) instead of the order that has just completed (Write Chained).

     RESOLUTION:  Modify "mpx_service" (hp3000_mpx.c) to test the correct I/O
     order in State A.

     STATUS:  Fixed in Release 2.
2016-07-05 22:09:21 -07:00
alpha alpha: Fix pal_eval_intr() to properly reference the ev5_icsr 2016-05-19 11:04:49 -07:00
ALTAIR ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
AltairZ80 AltairZ80: Fixed NUM_CHIP_TYPE warning and added missing declaration 2016-05-23 13:26:17 -07:00
B5500 B5500: Added buffer size option to DTC. 2016-05-24 20:36:22 -04:00
BESM6 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
display ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
doc HP3000, HP2100: Updated simulators from Dave Bryan 2016-07-05 22:09:21 -07:00
frontpanel FRONTPANEL: Add breakpoint support to support a debugger using the API 2016-02-11 16:42:25 -08:00
GRI ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
H316 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
HP2100 HP3000, HP2100: Updated simulators from Dave Bryan 2016-07-05 22:09:21 -07:00
HP3000 HP3000, HP2100: Updated simulators from Dave Bryan 2016-07-05 22:09:21 -07:00
I1401 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
I1620 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
I7094 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
Ibm1130 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
Intel-Systems ISYS8010, ISYS8020: Cleanup Build issues for gcc and clang and g++ and clang++ 2016-05-23 14:28:19 -07:00
Interdata ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
LGP ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
NOVA ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
PDP1 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
PDP8 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
PDP10 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
PDP11 PDP11, VAX: Allow Ethernet SET MAC arguments to have upper/lowe case values 2016-05-24 11:58:58 -07:00
PDP18B ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
PDQ-3 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
S3 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
SAGE ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
SDS ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sigma ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
slirp ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
slirp_glue ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
SSEM ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
swtp6800 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
TX-0 ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
VAX All VAX: Fix value check on SIIR. 2016-06-21 16:32:50 -07:00
Visual Studio Projects HP3000, HP2100: Updated simulators from Dave Bryan 2016-07-05 22:09:21 -07:00
.gitattributes PDP11: Add BOOT ability to the VT device to run the Lunar Lander program 2016-01-10 17:35:18 -08:00
.gitignore Remove accidentally added file 2016-06-08 10:13:47 -07:00
0readme_39.txt SCP: Added debugging support for EXPECT and SEND activities. Fixed SEND buffer queuing bug. 2014-10-17 11:34:06 -07:00
0readme_ethernet.txt DOC: Add NAT info 2015-10-21 02:54:58 -07:00
0readmeAsynchIO.txt Merge branch 'master' into AsyncTmxr 2013-01-21 16:52:42 -08:00
build_mingw.bat makefile: Simpler build under MinGW. Detect attempt to build under Msys bash shell and issue error message 2015-01-12 16:19:18 -08:00
build_mingw_ether.bat ETHER: Remove support for statically linking libpcap on Linux and OS X platforms 2014-09-21 16:31:49 -07:00
build_mingw_noasync.bat makefile: Simpler build under MinGW. Detect attempt to build under Msys bash shell and issue error message 2015-01-12 16:19:18 -08:00
descrip.mms HP3000, HP2100: Updated simulators from Dave Bryan 2016-07-05 22:09:21 -07:00
helpx SCP: Added hierarchical help capability (from Timothe Litt) 2013-11-22 06:08:03 -08:00
makefile HP3000, HP2100: Updated simulators from Dave Bryan 2016-07-05 22:09:21 -07:00
README.md SCP: Extend RUN and GO commands with optional UNTIL criteria. 2016-06-05 02:39:41 -07:00
scp.c VAX780: Fix Interval Timer logic 2016-06-20 15:56:19 -07:00
scp.h SCP: Allow spawn commands to not require space after ! 2016-05-30 04:14:45 -07:00
scp_help.h TIMER, SCP: Change the sim_activate_after APIs to pass the delay value as uint32. 2015-12-10 06:33:59 -08:00
sim_BuildROMs.c PDP11: Add BOOT ability to the VT device to run the Lunar Lander program 2016-01-10 17:35:18 -08:00
sim_card.c B5500: Promote sim_card to a top level simh library 2016-05-15 18:01:38 -07:00
sim_card.h B5500: Promote sim_card to a top level simh library 2016-05-15 18:01:38 -07:00
sim_console.c VIDEO: Added priority boost to thread performing SDL processing and updates 2016-06-11 09:52:33 -07:00
sim_console.h ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_defs.h SCP: Enhance EXPECT support to allow multiple rules with the same match string 2016-06-05 01:40:38 -07:00
sim_disk.c VIDEO: Added priority boost to thread performing SDL processing and updates 2016-06-11 09:52:33 -07:00
sim_disk.h ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_ether.c ETHER: Support Npcap for Windows Ethernet packet transport 2016-06-23 03:05:32 -07:00
sim_ether.h ETHER: Add support for generated interface MAC addresses 2016-05-23 16:56:06 -07:00
sim_fio.c ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_fio.h ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_frontpanel.c FRONTPANEL: Add breakpoint support to support a debugger using the API 2016-02-11 16:42:25 -08:00
sim_frontpanel.h FRONTPANEL: Add breakpoint support to support a debugger using the API 2016-02-11 16:42:25 -08:00
sim_imd.c ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_imd.h ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_rev.h Remove stray tab characters which crept in over time 2013-06-03 06:29:01 -07:00
sim_serial.c ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_serial.h ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_sock.c makefile: Fix MinGW build to allow C++ compiles 2016-05-16 16:17:22 -07:00
sim_sock.h ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_tape.c VIDEO: Added priority boost to thread performing SDL processing and updates 2016-06-11 09:52:33 -07:00
sim_tape.h ALL: Massive 'const' cleanup 2016-05-15 15:25:33 -07:00
sim_timer.c VIDEO: Added priority boost to thread performing SDL processing and updates 2016-06-11 09:52:33 -07:00
sim_timer.h VIDEO: Added priority boost to thread performing SDL processing and updates 2016-06-11 09:52:33 -07:00
sim_tmxr.c TMXR: Fix logic which interprets DTR transitions 2016-06-19 08:08:19 -07:00
sim_tmxr.h TMXR: Use single character output buffer when writing to physical serial ports 2016-06-11 08:28:28 -07:00
sim_video.c VIDEO: Allow SCREENSHOT command to optionally specify bitmap file extension 2016-06-15 00:27:07 -07:00
sim_video.h VIDEO: Avoid losing mouse button state when coalescing motion events 2016-06-11 08:39:25 -07:00

SIMH v4.0 - Beta

WHAT'S NEW

New Simulators

Leonid Broukhis and Serge Vakulenko have implemented a simulator for the Soviet mainframe BESM-6 computer.

Matt Burke has implemented new VAX model simulators:

VAX/11 730
VAX/11 750
VAX 8600/8650
MicroVAX I & VAXStation I
MicroVAX II & VAXStation II
rtVAX 1000 (or Industrial VAX 620)

Howard Harte has implemented a Lincoln Labs TX-0 simulator.

Gerardo Ospina has implemented a Manchester University SSEM (Small Scale Experimental Machine) simulator.

Richard Cornwell has implemented a Burroughs B5500 simulator.

Dave Bryan has implemented an HP-3000 Series III simulator.

Updated AltairZ80 simulator from Peter Schorn.

Updated HP2100 simulator from Dave Bryan.

Beta Sigma 5, 6 & 7 simulator from Bob Supnik

Beta SAGE-II and PDQ-3 simulators from Holger Veit

Intel Systems 8010 and 8020 simulators from Bill Beech

New Host Platform support - HP-UX and AIX

Simulator Front Panel API

The sim_frontpanel API provides a programatic interface to start and control any simulator without any special additions to the simulator code.

New Functionality

Remote Console Facility

A new capability has been added which allows a TELNET Connection to a user designated port so that some out of band commands can be entered to manipulate and/or adjust a running simulator. The commands which enable and control this capability are SET REMOTE TELNET=port, SET REMOTE CONNECTIONS=n, SET REMOTE TIMEOUT=seconds, and SHOW REMOTE.

The remote console facility has two modes of operation: 1) single command mode. and 2) multiple command mode.
In single command mode you enter one command at a time and aren't concerned about what the simulated system is doing while you enter that command. The command is executed once you've hit return. In multiple command mode you initiate your activities by entering the WRU character (usually ^E). This will suspend the current simulator execution. You then enter commands as needed and when you are done you enter a CONTINUE command. While entering Multiple Command commands, if you fail to enter a complete command before the timeout (specified by "SET REMOTE TIMEOUT=seconds"), a CONTINUE command is automatically processed and simulation proceeds.

A subset of normal simh commands are available for use in remote console sessions. The Single Command Mode commands are: ATTACH, DETACH, PWD, SHOW, DIR, LS, ECHO, HELP The Multiple Command Mode commands are: EXAMINE, IEXAMINE, DEPOSIT, EVALUATE, ATTACH, DETACH, ASSIGN, DEASSIGN, STEP, CONTINUE, PWD, SAVE, SET, SHOW, DIR, LS, ECHO, HELP

A remote console session will close when an EOF character is entered (i.e. ^D or ^Z).

VAX/PDP11 Enhancements

RQ has new disk types: RC25, RCF25, RA80
RQ device has a settable controller type (RQDX3, UDA50, KLESI, RUX50)
RQ disks default to Autosize without regard to disk type
RQ disks on PDP11 can have RAUSER size beyond 2GB
DMC11/DMR11 DDCMP DECnet device simulation.  Up to 8 DMC devices are supported.  Packet transport is via TCP or UDP connections.
KDP11 on PDP11 for DECnet
DUP11 on PDP11 for DECnet connectivity to talk to DMC, KDP or other DUP devices
DZ on Unibus systems can have up to 256 ports (default of 32), on 
    Qbus systems 128 port limit (default of 16).
DZ devices optionally support full modem control (and port speed settings 
    when connected to serial ports).
TU58 device support for all PDP11 and VAX systems.
DHU11 (device VH) on Unibus systems now has 16 ports per multiplexer.
XQ devices (DEQNA, DELQA and DELQA-T) are bootable on Qbus PDP11 simulators
XQ and XU devices (DEQNA, DELQA, DELQA-T, DEUNA and DELQA) devices can now 
    directly communicate to a remote device via UDP (i.e. a built-in HECnet bridge).
XQ and XU devices (DEQNA, DELQA, DELQA-T, DEUNA and DELQA) devices can now 
    optionally throttle outgoing packets which is useful when communicating with
    legacy systems (real hardware) on a local LAN which can easily get over run 
    when packets arrive too fast.
MicroVAX 3900 has QVSS (VCB01) board available.
MicroVAX 3900 and MicroVAX II have SET CPU AUTOBOOT option
MicroVAX 3900 has a SET CPU MODEL=(MicroVAX|VAXServer|VAXStation) command to change between system types
MicroVAX I has a SET CPU MODEL=(MicroVAX|VAXSTATION) command to change between system types
MicroVAX II has a SET CPU MODEL=(MicroVAX|VAXSTATION) command to change between system types

PDP10 Enhancements

KDP11 (from Timothe Litt) for DECnet connectivity to simulators with DMC, DUP or KDP devices
DMR11 for DECnet connectivity to simulators with DMC, DUP or KDP devices on TOPS10.

SDS 940 Enhancements

Support for SDS internal ASCII character encoding during display and data entry.
Allow breakpoints to be qualified by normal, monitor or user mode.
Fix CPU, RAD, MUX and I/O bugs that prevented SDS Time Share System Monitor and Executive from executing properly.

Terminal Multiplexer additions

Added support for TCP connections using IPv4 and/or IPv6.
Logging - Traffic going out individual lines can be optionally logged to 
        files
Buffering - Traffic going to a multiplexor (or Console) line can 
        optionally be buffered while a telnet session is not connected
        and the buffered contents will be sent out a newly connecting 
        telnet session.  This allows a user to review what may have 
        happened before they connect to that session.

Serial Port support based on work by J David Bryan and Holger Veit
Serial Console Support
Separate TCP listening ports per line
Outgoing connections per line (virtual Null Modem cable).
Packet sending and reception semantics for simulated network device support using either TCP or UDP transport.
Input character rates reflect the natural character arrival time based on the line speed.

Video Display Capabilities

Added support for monochrome displays with optional keyboards and mice.
The VAXstation QVSS device (VCB01) simulation uses this capability. Host platforms which have libSDL available can leverage this functionality.

Asynchronous I/O

* Disk and Tape I/O can be asynchronous.  Asynchronous support exists 
  for pdp11_rq, pdp11_rp and pdp11_tq devices (used by VAX and PDP11 
  simulators).
* Multiplexer I/O (Telnet and/or Serial) can be asynchronous.  
  Asynchronous support exists for console I/O and most multiplexer 
  devices.  (Still experimental - not currently by default)

Ethernet Transport Enhancements

* UDP packet transport.  Direct simulator connections to HECnet can be 
  made without running a local packet bridge program.
* NAT packet transport.  Simulators which only speak TCP/IP (No DECnet)
  and want to communicate with their host systems and/or directly to 
  the Internet can use NAT packet transport.  This also works for WiFi 
  connected host systems.
* Packet Transmission Throttling.  When connected to a LAN which has 
  legacy network adapaters (DEQNA, DEUNA) on legacy systems, it is very
  easy for a simulated system to overrun the receiving capacity of the
  older systems.  Throttling of simulated traffic delivered to the LAN 
  can be used to mitigate this problem.
* Reliable MAC address conflict detection.  
* Automatic unique default MAC address assignment.  

Disk Extensions

RAW Disk Access (including CDROM)
Virtual Disk Container files, including differencing disks

Embedded ROM support

Simulators which have boot commands which load constant files as part of 
booting have those files imbedded into the simulator executable.  The 
imbedded files are used if the normal boot file isn't found when the 
simulator boots.  Specific examples are:  VAX (MicroVAX 3900 - ka655x.bin), 
VAX8600 (VAX 8600 - vmb.exe), VAX780 (VAX 11/780 - vmb.exe), 
VAX750 (VAX 11/750 - vmb.exe, ka750_old.bin, ka750_new.bin), 
VAX730 (VAX 11/730 - vmb.exe), VAX610 (MicroVAX I - ka610.bin), 
VAX620 (rtVAX 1000 - ka620.bin), VAX630 (MicroVAX II - ka630.bin)

Control Flow

The following extensions to the SCP command language without affecting prior behavior:

GOTO <Label>                 Command is now available.  Labels are lines 
                             in which the first non whitespace character 
                             is a ":".  The target of a goto is the first 
                             matching label in the current do command 
                             file which is encountered.  Since labels 
                             don't do anything else besides being the 
                             targets of goto's, they could be used to 
                             provide comments in do command files, for 
                             example (":: This is a comment")
SET ON                       Enables error trapping for currently defined 
                             traps (by ON commands)
SET NOON                     Disables error trapping for currently 
                             defined traps (by ON commands)
RETURN                       Return from the current do command file 
                             execution with the status from the last 
                             executed command
RETURN <statusvalue>         Return from the current do command file 
                             execution with the indicated status.  Status 
                             can be a number or a SCPE_<conditionname> 
                             name string.
ON <statusvalue> commandtoprocess{; additionalcommandtoprocess}
                             Sets the action(s) to take when the specific 
                             error status is returned by a command in the 
                             currently running do command file.  Multiple 
                             actions can be specified with each delimited 
                             by a semicolon character (just like 
                             breakpoint action commands).
ON ERROR commandtoprocess{; additionalcommandtoprocess}
                             Sets the default action(s) to take when any 
                             otherwise unspecified error status is returned 
                             by a command in the currently running do 
                             command file.  Multiple actions can be 
                             specified with each delimited by a semicolon 
                             character (just like breakpoint action 
                             commands).
ON <statusvalue>                   
ON ERROR                     Clears the default actions to take when any 
                             otherwise unspecified error status is 
                             returned by a command in the currently 
                             running do command file.

Error traps can be taken for any command which returns a status other than SCPE_STEP, SCPE_OK, and SCPE_EXIT.

ON Traps can specify any status value from the following list: NXM, UNATT, IOERR, CSUM, FMT, NOATT, OPENERR, MEM, ARG, STEP, UNK, RO, INCOMP, STOP, TTIERR, TTOERR, EOF, REL, NOPARAM, ALATT, TIMER, SIGERR, TTYERR, SUB, NOFNC, UDIS, NORO, INVSW, MISVAL, 2FARG, 2MARG, NXDEV, NXUN, NXREG, NXPAR, NEST, IERR, MTRLNT, LOST, TTMO, STALL, AFAIL. These values can be indicated by name or by their internal numeric value (not recommended).

Interactions with ASSERT command and "DO -e": DO -e is equivalent to SET ON, which by itself it equivalent to "SET ON; ON ERROR RETURN". ASSERT failure have several different actions: * If error trapping is not enabled then AFAIL causes exit from the current do command file. * If error trapping is enabled and an explicit "ON AFAIL" action is defined, then the specified action is performed. * If error trapping is enabled and no "ON AFAIL" action is defined, then an AFAIL causes exit from the current do command file.

Other related changes/extensions: The "!" command (execute a command on the local OS), now returns the command's exit status as the status from the "!" command. This allows ON conditions to handle error status responses from OS commands and act as desired.

Scriptable interactions with running simulators.

The EXPECT command now exists to provide a means of reacting to simulator output and the SEND command exists to inject data into programs running within a simulator.

EXPECT {HALTAFTER=n,}"\r\nPassword: "
SEND {AFTER=n,}{DELAY=m,}"mypassword\r"

or

EXPECT {HALTAFTER=n,}"\r\nPassword: " SEND {AFTER=n,}{DELAY=m,}"mypassword\r"; GO

Help

HELP dev
HELP dev ATTACH
HELP dev SET  (aka HELP SET dev)
HELP dev SHOW (aka HELP SHOW dev)
HELP dev REGISTERS

Generic scp support Clock Coscheduling as opposed to per simulator implementations.

New SCP Commands:

SCREENSHOT filename.bmp         Save video window to the specified file
SET ENVIRONMENT Name=Value      Set Environment variable
SET ASYNCH                      Enable Asynchronous I/O
SET NOASYNCH                    Disable Asynchronous I/O
SET VERIFY                      Enable commang display while processing DO command files
SET NOVERIFY                    Enable commang display while processing DO command files
SET MESSAGE                     Enable error message output when commands complete (default)
SET NOMESSAGE                   Disable error message output when commands complete
SET QUIET                       Set minimal output mode for command execution
SET NOQUIET                     Set normal output mode for command execution
SET PROMPT                      Change the prompt used by the simulator (defaulr sim>)
SET THROTTLE x/t                Throttle t ms every x cycles
SET REMOTE TELNET=port          Specify remote console telnet port
SET REMOTE NOTELNET             Disables remote console
SET REMOTE CONNECTIONS=n        Specify the number of concurrent remote console sessions
SHOW FEATURES                   Displays the devices descriptions and features
SHOW ASYNCH                     Display the current Asynchronous I/O status
SHOW SERIAL                     Display the available and/or open serial ports
SHOW ETHERNET                   Display the available and/or open ethernet connections
SHOW MULTIPLEXER                Display the details about open multiplexer devices
SHOW CLOCKS                     Display the details about calibrated timers
SHOW REMOTE                     Display the remote console configuration
SHOW ON                         Display ON condition dispatch actions
SET ON                          Enable ON condition error dispatching
SET NOON                        Disable ON condition error dispatching
GOTO                            Transfer to lable in the current DO command file
CALL                            Call subroutine at indicated label
RETURN                          Return from subroutine call
SHIFT                           Slide argument parameters %1 thru %9 left 1
NOOP                            A no-op command
ON                              Establish or cancel an ON condition dispatch
IF                              Test some simulator state and conditionally execute commands
CD                              Change working directory
SET DEFAULT                     Change working directory
PWD                             Show working directory
SHOW DEFAULT                    Show working directory
DIR {path|file}                 Display file listing
LS {path|file}                  Display file listing
NEXT                            Step across a subroutine call or step a single instruction.
EXPECT                          React to output produced by a simulated system
SEND                            Inject input to a simulated system's console
SCREENSHOT                      Snapshot the current video display window
RUN UNTIL breakpoint            Establish the breakpoiunt specified and run until it is encountered
RUN UNTIL "output-string" ...   Establish the specified "output-string" as an EXPECT and run until it is encountered.
GO UNTIL breakpoint             Establish the breakpoiunt specified and go until it is encountered
GO UNTILE "output-string" ...   Establish the specified "output-string" as an EXPECT and go until it is encountered.

Command Processing Enhancements

Environment variable insertion

Built In variables %DATE%, %TIME%, %DATETIME%, %LDATE%, %LTIME%, %CTIME%, %DATE_YYYY%, %DATE_YY%, %DATE_YC%, %DATE_MM%, %DATE_DD%, %DATE_D%, %DATE_WYYYY%, %DATE_WW%, %TIME_HH%, %TIME_MM%, %TIME_SS%, %STATUS%, %TSTATUS%, %SIM_VERIFY%, %SIM_QUIET%, %SIM_MESSAGE% Command Aliases

Token "%0" expands to the command file name. Token %n (n being a single digit) expands to the n'th argument Tonen %* expands to the whole set of arguments (%1 ... %9)

The input sequence "%" represents a literal "%", and "\" represents a literal "". All other character combinations are rendered literally.

Omitted parameters result in null-string substitutions.

A Tokens preceeded and followed by % characters are expanded as environment variables, and if an environment variable isn't found then it can be one of several special variables:

      %DATE%              yyyy-mm-dd
      %TIME%              hh:mm:ss
      %DATETIME%          yyyy-mm-ddThh:mm:ss
      %LDATE%             mm/dd/yy (Locale Formatted)
      %LTIME%             hh:mm:ss am/pm (Locale Formatted)
      %CTIME%             Www Mmm dd hh:mm:ss yyyy (Locale Formatted)
      %DATE_YYYY%         yyyy        (0000-9999)
      %DATE_YY%           yy          (00-99)
      %DATE_MM%           mm          (01-12)
      %DATE_MMM%          mmm         (JAN-DEC)
      %DATE_DD%           dd          (01-31)
      %DATE_WW%           ww          (01-53)     ISO 8601 week number
      %DATE_WYYYY%        yyyy        (0000-9999) ISO 8601 week year number
      %DATE_D%            d           (1-7)       ISO 8601 day of week
      %DATE_JJJ%          jjj         (001-366) day of year
      %DATE_19XX_YY%      yy          A year prior to 2000 with the same
                                      calendar days as the current year
      %DATE_19XX_YYYY%    yyyy        A year prior to 2000 with the same 
                                      calendar days as the current year
      %TIME_HH%           hh          (00-23)
      %TIME_MM%           mm          (00-59)
      %TIME_SS%           ss          (00-59)
      %STATUS%            Status value from the last command executed
      %TSTATUS%           The text form of the last status value
      %SIM_VERIFY%        The Verify/Verbose mode of the current Do command file
      %SIM_VERBOSE%       The Verify/Verbose mode of the current Do command file
      %SIM_QUIET%         The Quiet mode of the current Do command file
      %SIM_MESSAGE%       The message display status of the current Do command file

Environment variable lookups are done first with the precise name between the % characters and if that fails, then the name between the % characters is upcased and a lookup of that valus is attempted.

The first Space delimited token on the line is extracted in uppercase and then looked up as an environment variable. If found it the value is supstituted for the original string before expanding everything else. If it is not found, then the original beginning token on the line is left untouched.

Command aliases

commands can be aliases with environment variables. For example:

  sim> set env say=echo
  sim> say Hello there
  Hello there
Do command argument manipulation

The SHIFT command will shift the %1 thru %9 arguments to the left one position.

Building and running a simulator

Use Prebuilt Windows Simulators

Simulators for the Windows platform are built and made available on a regular basis (at least once a week if changes have been made to the codebase).

The prebuilt Windows binaries will run on all versions of Microsoft Windows from Windows XP onward.

They can be accessed at https://github.com/simh/Win32-Development-Binaries

Several relatively recent versions should be available which you can download and use directly.

Building simulators yourself

First download the latest source code from the github repository's master branch at https://github.com/simh/simh/archive/master.zip

Depending on your host platform one of the following steps should be followed:

Linux/OSX other *nix platforms

If you are interested in using a simulator with Ethernet networking support (i.e. one of the VAX simulators or the PDP11), then you should make sure you have the correct networking components available. The instructions in https://github.com/simh/simh/blob/master/0readme_ethernet.txt describe the required steps to get ethernet networking components installed and how to configure your environment.

See the 0readme_ethernet.txt file for details about the required network components for your platform. Once your operating system build environment has the correct networking components available the following command will build working simulators:

$ make {simulator-name (i.e. vax)}

The makefile provided requires GNU make, which is the default make facility for most systems these days. Any host system which doesn't have GNU make available as the default make facility may have it installed as 'gmake'. GNU make (gmake) is generally available an installation package for all current operating systems which have a package installation system.

Build Dependencies

Some simulators depend on external packages to provide the full scope of functionality they may be simulating. These additional external packages may or may not be included in as part of the standard Operating System distributions.

OS X - Dependencies

The MacPorts package manager is available to provide these external packages. Once MacPorts is installed, these commands will install the required dependent packages:

# port install vde2
# port install libsdl2
Linux - Dependencies

Different Linux distributions have different package managment systems:

Ubuntu:

# apt-get install libpcap-dev
# apt-get install vde2
# apt-get install libsdl2

Windows

Compiling on windows is supported with recent versions of Microsoft Visual Studio (Standard or Express) and using GCC via the MinGW environment. Things may also work under Cygwin, but that is not the preferred windows environment. Not all features will be available as well as with either Visual Studio or MinGW.

Visual Studio (Standard or Express) 2008, 2010, 2012, 2013 or Visual Studio Community 2015

The file https://github.com/simh/simh/blob/master/Visual%20Studio%20Projects/0ReadMe_Projects.txt describes the required steps to use the setup your environment to build using Visual Studio.

MinGW

The file https://github.com/simh/simh/blob/master/Visual%20Studio%20Projects/0ReadMe_Projects.txt describes the required steps to use the setup your environment to build using MinGW.

VMS

Download the latest source code as a zip file from: https://github.com/simh/simh/archive/master.zip

Unzip it in the directory that you want SIMH to reside in. Unpack it and set the file attributes as follows:

$ unzip simh-master.zip
$ set default [.simh-master]
$ set file/attri=RFM:STM makefile,*.mms,[...]*.c,[...]*.h,[...]*.txt

Simulators with ethernet network devices (All the VAX simulators and the PDP11) can have functioning networking when running on Alpha or IA64 OpenVMS.

In order to build and run simulators with networking support, the VMS-PCAP package must be available while building your simulator. The simh-vms-pcap.zip file can be downloaded from https://github.com/simh/simh/archive/vms-pcap.zip
This link will return a file called simh-vms-pcap.zip which should be unpacked as follows:

$ unzip -aa simh-vms-pcap.zip
$ rename [.simh-vms-pcap]pcap-vms.dir []

The PCAP-VMS components are presumed (by the descript.mms file) to be located in a directory at the same level as the directory containing the simh source files. For example, if these exist here:

[]descrip.mms []scp.c etc.

Then the following should exist: [-.PCAP-VMS]BUILD_ALL.COM [-.PCAP-VMS.PCAP-VCI] [-.PCAP-VMS.PCAPVCM] etc.

To build simulators:

On a VAX use:

$ MMx

On a Alpha & IA64 hosts use:

$ MMx                        ! With Ethernet support
$ MMx/MACRO=(NONETWORK=1)    ! Without Ethernet support

UNZIP can be found on the VMS freeware CDs, or from www.info-zip.org MMS (Module Management System) can be licensed from HP/Compaq/Digital as part of the VMS Hobbyist program (it is a component of the DECSET product). MMK can be found on the VMS freeware CDs, or from http://www.kednos.com/kednos/Open_Source/MMK DEC C can be licensed from HP/Compaq/Digital as part of the VMS Hobbyist program.

Problem Reports

If you find problems or have suggestions relating to any simulator or the simh package as a whole, please report these using the github "Issue" interface at https://github.com/simh/simh/issues.

Problem reports should contain;

  • a description of the problem
  • the simulator you experience the problem with
  • your host platform (and OS version)
  • how you built the simulator or that you're using prebuilt binaries
  • the simulator build description should include the output produced by while building the simulator
  • the output of SHOW VERSION while running the simulator which is having an issue
  • the simulator configuration file (or commands) which were used when the problem occurred.