Giter VIP home page Giter VIP logo

simh's Introduction

SIMH v4.0 - 19-01 Current

Coverity Scan Build Status AppVeyor CI Build Status

Table of Contents:

WHAT'S NEW since the Open SIMH fork
WHAT'S NEW since simh v3.9
. . New Simulators
. . Simulator Front Panel API
. . New Functionality
. . . . DDCMP Synchronous host physical device support - framer
. . . . Remote Console Facility
. . . . VAX/PDP11 Enhancements
. . . . PDP11 Specific Enhancements
. . . . PDP10 Enhancements
. . . . SDS 940 Enhancements
. . . . Terminal Multiplexer additions
. . . . Video Display Capabilities
. . . . Asynchronous I/O
. . . . Clock/Timer Enhancements
. . . . Ethernet Transport Enhancements
. . . . Disk Extensions
. . . . Embedded ROM support
. . . . Control Flow
. . . . Scriptable interactions with running simulators
. . . . Help
. . . . Generic SCP support Clock Coscheduling as opposed to per simulator implementations
. . . . New SCP Commands
. . . . Command Processing Enhancements
. . . . . . Environment variable insertion
. . . . . . Command aliases
. . . . . . Do command argument manipulation
. . Building and running a simulator
. . . . Use Prebuilt Windows Simulators
. . . . Building simulators yourself
. . . . . . Linux/OSX other *nix platforms
. . . . . . . . Build Dependencies
. . . . . . . . . . OS X - Dependencies
. . . . . . . . . . Linux - Dependencies
. . . . . . Windows
. . . . . . . . Required related files
. . . . . . . . Visual Studio (Standard or Express) 2008, 2010, 2012, 2013 or Visual Studio Community 2015, 2017, 2019
. . . . . . . . MinGW32
. . . . . . VMS
. . Problem Reports

WHAT'S NEW since the Open SIMH fork

All Simulator updates on Open SIMH will be present in this repository, and any changes to the master branch code in this repository authored by anyone except Mark Pizzolato may be posted as pull requests on the Open simh repo.

Simulator binaries for x86 Linus, x86 macOS, and Windows for all recent changes are available at https://github.com/simh/Development-Binaries

Mark Pizzolato's changes only present in the simh/simh repo and not present in the Open SIMH repo:

Visible changes to SCP (the simulator framework or command execution environment)

  • Add descriptive messages for cases when NOPARAM status is returned.

  • Avoid excessive DO command context lines when commands produce multiple lines of output.

  • Support has been added to allow for optional per device unit tests to exist and to invoke them at simulator startup.

  • Add support for generic bit field packing and unpacking during buffer copying.

  • Display count of units when all units are disabled.

  • Support to display all SCP visible filenames via relative paths and use those in SAVEd state.

  • ZAP command can be aborted by a Control-C.

  • Display current NOAUTOSIZE status in SHOW VERSION output.

  • Extend logical name support to include optional unique names for units as well as devices.

  • Add extended register sanity checks including duplicate name detection. Fixed simulator devices with duplicate register names.

  • Simulators with video devices that may be enabled, no longer disable the screen saver until the video display is presented. Optionally enabling or disabling the OS screen saver by an environment variable.

  • More readable output of SHOW | with variable sized DEVICE and UNIT names.

  • Automatic Cryllic Font detection in BESM6 simulator at runtime rather than build time. More relevant for distribution binaries.

  • Built-in command history and tab file name completion previously done by GPL readline now done by BSD licensed library available on all platforms (especially Windows).

  • Robust register sanity checking for all register definition macros.

  • When building on windows, the windows-build dependency libraries are automatically downloaded even if git is not available.

  • Extended video component version information displayed in SHOW VERSION output.

  • Add a global SET AUTOZAP command or per drive SET AUTOZAP which removes metadata from disk containers at detach time if the container has metadata.

  • DISKINFO command displays disk container metadata (if present) and container size along with detected file system information if a known file system type is present.

  • makefile builds which have potentially useful dependencies not found will prompt to install these components prior to building. MacOS Brew dependencies can be directly done from within the makefile. Other platforms (or package management systems) which require root access to install will display the appropriate package management commands and and exit. Support for macOS (HomeBrew and MacPorts), Linux (Ubuntu/Debian, RedHat/Fedora), NetBSD, FreeBSD, OpenBSD.

  • SHOW VERSION show the host system type that build the runing simulator when it is not the same as the current host system.

  • Support for building simulators without built-in boot or ROM code when building with DONT_USE_INTERNAL_ROM is defined, but to automatically and transparently fetch the needed ROM or other boot code when it is needed. This is possibly useful for systems which don't want to distribute simulators with build-in binary code which may have unknown copyright status.

  • Reasonable output produced for all simulators from HELP BOOT.

  • Fix occasional hang of IBM1130 simulator while building with Visual Studio.

  • Building with the simh makefile can optionally compile each source file separately and store the compiled result. This approach lends itself to quicker building for folks who are developing new simulators or new simulator modules. This was requested and discussed in #697. Invoking make with BUILD_SEPARATE=1 on the make command line or as an exported environment variable will achieve separate compiles. Invoking make with QUIET=1 on the make command line or as an exported environment variable will summary output of activities being performed instead of full compiler commands.

  • TAPE and SCSI libraries have been extended to fully support partial record reads of fixed sized records which may contain multiple records in recorded data. Images of this type are common for QIC tape archives generally available on bitsavers and elsewhere. Attach time checking on simulated QIC tape devices reports possible problems that may occur.

  • Appveyor CI/CD builds of all simulators for Linux, macOS and Windows platforms.

  • All the available simulator defined environment variables are documented in the help and sim_doc document file.

  • SET CONSOLE TELNET=CONNECT will start a telnet session to the simulator console in a separate window.

  • Support for building on systems with the gameoftrees.org (got) source control system.

  • Frontpanel API improvements, document clarifications and bug fixes.

  • Added a SET CLOCK NOCALIBRATE mode.
    NOCALIBRATE mode allows all activity of a simulator run to occur with precisely consistent event timing. In this mode, every clock tick takes precisely the same number of instructions/cycles. Likewise, the polling activities for MUX or other poll oriented devices occurs after precisely the same number of instructions/cycles executed. As a consequence of this mode, no effort to align simulated clock ticks (and simulated access to wall clock time) is made.

    This mode will often be useful for running diagnostics which expect a particular relationship between perceived wall clock and instruction times. It might also be useful for running test scripts which may want to compare output of previous executions to to current execution or to compare execution on arbitrarily different host computers. It will also be useful when running under a host system debugger which might produce confusing results when various wall clock pause times when stopping at breakpoints. Additionally, consistent logical timing exists when simulator debug or instruction history is being recorded which normally would impact wall clock times.

    In NOCALIBRATE mode, the operator gets to specify the pseudo execution rate along with the base wall clock time that access to pseudo wall clock accesses returns.

  • All removable devices get detached on a media unload without regard to data access format (SIMH, VHD or RAW).

  • Various failing bugs in tape detach logic are fixed.

  • Clean building on Android Termux.

  • Proper line editing and tab filename completion behavior on all Unix and Windows platforms.

  • Simulators with video displays have a working SCREENSHOT command.

  • VHD Support for Differencing Disks has been corrected.

  • Attach time disk container copy support between dissimilar storage formats (VHD<->SIMH). Previously container copy operations were only supported between identical format containers (SIMH<->SIMH, and VHD<->VHD).

  • DISKINFO command provides more useful metadata information and file system verification with full support for VHD Differencing Disks.

  • Simulators which have instruction history support can now have SHOW HISTORY output be aborted by SIGINT (Control-C).

  • Device REGister variables have been extended to support double precision data.

  • More complete host system information displayed in SHOW VERSION output.

  • Simulator THROTTLING can only be enabled once per simulator run. This avoids potential errant behaviors when arbitrarily switching throttling settings.

  • EXAMINE memory commands will now produce minimal output that summarizes multiple successive locations with the same contents and may be aborted by SIGINT (Control-C).

All simulators build cleanly under OpenVMS on ia64 systems.

Changes to the PDP-11 and VAX simulators also not in the Open SIMH repo

  • All VAXen: Correct HELP CPU to properly describe model specific LOAD options for ROM and NVRAM.
  • Add 2.11 BSD and NetBSD file system recognizers.
  • Add memory details and behavior description to the MicroVAX 3900 HELP CPU output.
  • Unibus and Qbus autoconfiguration disabling has been relaxed somewhat. Previously, any "SET ADDRESS= (or VECTOR=)" command would automatically disable autoconfigure for the rest of the simulator session. This behavior has been relaxed so that autoconfigure will only be disabled if the specified ADDRESS or VECTOR value is different from the value previously set by the initial autoconfigure.
  • Aggressive validation of Unibus and Qbus ADDRESS and VECTOR values prior to execution starting due to a BOOT command.
  • Fixed bug in devices that use sim_disk which deallocated a file transfer buffer on detach.
  • Metadata is implemented on all VAX and PDP11 disk devices when NOAUTOSIZE is not specified.
  • Full support for using disk containers with metadata between different system and device types where it makes sense.
  • VHD disk formats are available on all disk types (including floppy or DECtape devices).
  • Properly size RY drives which also don't have DEC144
  • Properly name RQ extended units beyond the initial default units.
  • HELP CPU shows supported breakpoint types.
  • Add device support for DL11-C/DL11-D/DL11-E/DLV11-J in addition to the original KL11/DL11-A/DL11-B/DL11-E/DL11-F support. These new devices have different bus address ranges and can coexist with the original DL devices. The new devices are DLCJI and DLCJO and are managed identically to the original DLI and DLO devices.
  • All improvements and fixes to the PDP11 simulator from simh Version 3.12-3 release and beyond.
  • MicroVAX I has unsupported devices (TQ, TS, and VH) removed.
  • VAX750, VAX780, VAX8600 and PDP11 support additional Massbus disks on DEVICE RPB.
  • VAXStation I is now, once again, working.
  • MicroVAX I/VAXStation I has been enhanced to dynamically look for its secondary bootstrap program (SYSBOOT.EXE) from both [SYSEXE]SYSBOOT.EXE and [SYS0.SYSEXE]SYSBOOT.EXE.
  • PDP11 now has working support for RC and RF expandable platter based disk drives.
  • Properly set asynchronous interrupt latency in all VAX simulators.
  • MicroVAX I simulator boots from oldest MicroVMS media due to the addition of RQDX1 disk controller type.
  • MSCP Media-Id information and drive geometry information is available for all attached disk containers.
  • VAX Instruction history can be recorded to disk both for all instructions executed as well as every n instructions.
  • VAX Unibus simulators (780, 750, 730, 8600, 8200) run DEC supplied diagnostics at the speed of the original systems and also run the privileged instruction diagnostic that was supported on the original systems.

All relevant changes in the simh v3.12-4 release have been merged into this repo

Bill Beech has made significant enhancements and bug fixes to the SWTP simulators along with a new disk controller from Roberto Sancho Villa

WHAT'S NEW since simh v3.9

New Simulators

Seth Morabito has implemented AT&T 3B2-400 and 3B2-700 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 8200/8250
VAX 8600/8650
MicroVAX I & VAXstation I
MicroVAX II & VAXstation II & VAXstation II/GPX
rtVAX 1000 (or Industrial VAX 620)
MicroVAX 2000 & VAXstation 2000
MicroVAX 3100 M10/M20
MicroVAX 3100 M10e/M20e
InfoServer 100
InfoServer 150 VXT
VAXstation 3100 M30
VAXstation 3100 M38
VAXstation 3100 M76
VAXstation 4000 VLC
VAXstation 4000 M60
MicroVAX 3100 M80
InfoServer 1000

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.

Richard Cornwell has implemented the IBM 701, IBM 704, IBM 7010/1410, IBM 7070/7074, IBM 7080/702/705/7053 and IBM 7090/7094/709/704 simulators.

Richard Cornwell has implemented the PDP6, PDP10-KA, PDP10-KI, PDP10-KL and PDP10-KS simulators. With the differences merely being some device name changes, the PDP10-KS should be compatible with Bob Supnik's original PDP10 simulator.

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

Updated HP2100 simulator from Dave Bryan.

Updated AltairZ80 simulator from Peter Schorn.

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

CDC 1700 simulator from John Forecast

Hans-Åke Lund has implemented an SCELBI (SCientic-ELectronics-BIology) simulator.

IBM 650 simulator from Roberto Sancho Villa

Jim Bevier has implemented a SEL32 simulator.

Updates to the Unibus DUP & Qbus DPV device by Trevor Warwick

Support for Phase V DECnet connections on VAX Unibus and Qbus systems and the addition of support for the DPV11 for Qbus VAX systems.

New Host Platform support - HP-UX and AIX

Simulator Front Panel API

The sim_frontpanel API provides a programmatic interface to start and control any simulator without any special additions to the simulator code or changes to the SCP framework.

New Functionality

DDCMP Synchronous host physical device support - framer

Paul Koning has implemented a USB hardware device which can interface transport DDCMP packets across a synchronous line to physical host systems with native synchronous devices or other simulators using framer devices.

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
CH11 on PDP11 and VAX780 for Chaosnet (from Lars Brinkhoff)
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

PDP11 Specific Enhancements

ROM (from Lars Brinkhoff) I/O page ROM support
NG (from Lars Brinkhoff) Knight vector display
DAZ (from Lars Brinkhoff) Dazzle Dart Input device

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.
CH11 (from Lars Brinkhoff) Chaosnet interface.

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 and color displays with optional keyboards and mice.
The VAXstation QVSS device (VCB01) and QDSS device (VCB02) simulations use these capabilities. Host platforms which have libSDL2 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)

Clock/Timer Enhancements

* Asynchronous clocks ticks exist to better support modern processors 
  that have variable clock speeds.  The initial clock calibration model 
  presumed a constant simulated instruction execution rate.  
  Modern processors have variable processor speeds which breaks this 
  key assumption.  
* Strategies to make up for missed clock ticks are now available
  (independent of asynchronous tick generation).  These strategies
  generate catch-up clock ticks to keep the simulator passage of 
  time consistent with wall clock time.  Simulator time while idling 
  or throttling is now consistent.  Reasonable idling behavior is 
  now possible without requiring that the host system clock tick be
  10ms or less.
* Simulator writers have access to timing services and explicit wall 
  clock delays where appropriate.

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 adapters (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
File System type detection to accurately autosize disks.
Recognized file systems are: DEC ODS1, DEC ODS2, DEC RT11, DEC RSTS, DEC RSX11, Ultrix Partitions, ISO 9660, BSD 2.11 partitions and NetBSD partitions

Tape Extensions

AWS format tape support
TAR format tape support
ANSI-VMS, ANSI-RSX11, ANSI-RSTS, ANSI-RT11 format tape support

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")
RETURN {status}              Return from the current do command file 
                             execution with the specified status or
                             the status from the last executed command 
                             if no status is specified.  Status can be
                             a number or a SCPE_<conditionname> name 
                             string.
SET ON                       Enables error trapping for currently defined 
                             traps (by ON commands)
SET NOON                     Disables error trapping for currently 
                             defined traps (by ON commands)
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 CONTROL_C commandtoprocess{; additionalcommandtoprocess}
                             Specifies particular actions to perform when
                             the operator enters CTRL+C while a command
                             procedure is running.  The default action is 
                             to exit the current and any nested command 
                             procedures and return to the sim> input prompt.
ON <statusvalue>             Clears the action(s) to take when condition occurs
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.
ON CONTROL_C
                             Restores the default CTRL+C behavior for the
                             currently running command procedure.

DO <stdin>
                             Invokes a nested DO command with input from the 
                             running console.

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, NOTATT, AMBREG. 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

The built-in help system provides a heirarchical oriented help command interface.
In addition, there is explicit support for per device 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

Device simulator authors can easily schedule their device polling activities to allow for efficient simulator execution when polling for device activity while still being well behaved when their simulated system is actually idle.

New SCP Commands:

SCREENSHOT filename.bmp          Save video window to the specified file
SET ENV Name=Value               Set Environment variable
SET ENV -p "Prompt" Name=Default Gather User input into an Environment Variable
SET ENV -a Name=Expression       Evaluate an expression and store result in an Environment Variable
SET ASYNCH                       Enable Asynchronous I/O
SET NOASYNCH                     Disable Asynchronous I/O
SET VERIFY                       Enable command display while processing DO command files
SET NOVERIFY                     Enable command 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 (default 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 label 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
IF (C-style-expression)          Test some simulator state and conditionally execute commands
ELSE                             commands to execute when the previous IF wasn't true
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
SLEEP time                       Pause command execution for specified time
SCREENSHOT                       Snapshot the current video display window
RUN UNTIL breakpoint             Establish the breakpoint 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 breakpoint specified and go until it is encountered
GO UNTIL "output-string" ...     Establish the specified "output-string" as an EXPECT and go until it is encountered.
RUNLIMIT						 Bound simulator execution time
TAR                              Manipulate file archives
CURL                             Access URLs from the web

Command Processing Enhancements

Environment variable insertion

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

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

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

Omitted parameters result in null-string substitutions.

Tokens preceded 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)
      %UTIME%             nnnn (Unix time - seconds since 1/1/1970)
      %DATE_YYYY%         yyyy        (0000-9999)
      %DATE_YY%           yy          (00-99)
      %DATE_MM%           mm          (01-12)
      %DATE_MMM%          mmm         (JAN-DEC)
      %DATE_MONTH%        month       (January-December)
      %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
      %SIM_NAME%          The name of the current simulator
      %SIM_BIN_NAME%      The program name of the current simulator
      %SIM_BIN_PATH%      The program path that invoked the current simulator
      %SIM_OSTYPE%        The Operating System running the current simulator
      %SIM_RUNTIME%       The Number of simulated instructions or cycles performed
      %SIM_RUNTIME_UNITS% The units of the SIM_RUNTIME value
      %SIM_REGEX_TYPE%    The regular expression type available
      %SIM_MAJOR%         The major portion of the simh version
      %SIM_MINOR%         The minor portion of the simh version
      %SIM_PATCH%         The patch portion of the simh version
      %SIM_DELTA%         The delta portion of the simh version
      %SIM_VM_RELEASE%    An optional VM specific release version
      %SIM_VERSION_MODE%  The release mode (Current, Alpha, Beta)
      %SIM_GIT_COMMIT_ID% The git commit id of the current build
      %SIM_GIT_COMMIT_TIME%  The git commit time of the current build
      %SIM_RUNLIMIT%      The current execution limit defined
      %SIM_RUNLIMIT_UNITS% The units of the SIM_RUNLIMIT value (instructions, cycles or time)

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 values 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 substituted 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 substantive 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. If simulators are being built that could provide more functionality than the currently installed packages will provide, the build will succeed with reduced functionality (i.e. limited network or no video support), but suggestions will be provided as to what could provide full functionality.

OS X - Dependencies

The HomeBrew package manager can be used to provide these packages:

$ brew install vde pcre libedit sdl2 libpng zlib sdl2_ttf make

OR

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

# port install vde2 pcre libedit libsdl2 libpng zlib libsdl2_ttf gmake
Linux - Dependencies

Different Linux distributions have different package management systems:

Ubuntu/Debian:

# apt-get install gcc libpcap-dev libvdeplug-dev libpcre3-dev libedit-dev libsdl2-dev libpng-dev libsdl2-ttf-dev

Fedora/RedHat:

# yum install gcc libpcap-devel pcre-devel libedit-devel SDL2-devel libpng-devel zlib-devel SDL2_ttf-devel
NetBSD - Dependencies
# pkgin install pcre editline SDL2 png zlib SDL2_ttf gmake
FreeBSD - Dependencies
# pkg install pcre libedit sdl2 png sdl2_ttf gmake
OpenBSD - Dependencies
# pkg_add pcre sdl2 png sdl2-ttf gmake

Windows

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

Required related files

The file https://github.com/simh/simh/blob/master/Visual%20Studio%20Projects/0ReadMe_Projects.txt

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

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.

MinGW32

Building with MinGW32 is deprecated and may be removed in the future since the original motivation for MinGW32 builds was due to there not being a free compiler environment on Windows. That hasn't been the case for at least 15 years. Building with MinGW32 requires the same directory organization and the dependent package support described for Visual Studio in the file https://github.com/simh/simh/blob/master/Visual%20Studio%20Projects/0ReadMe_Projects.txt. Building with MinGW64 is not supported.

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 -a 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.

simh's People

Contributors

9track avatar agn453 avatar al20878 avatar deltecent avatar deramp5113 avatar hharte avatar jguillaumes avatar johnforecast avatar kenrector avatar larrybaker avatar larsbrinkhoff avatar leobru avatar lioncash avatar markemmer avatar markpizz avatar mmuman avatar ngospina avatar nj7p avatar pdp-1170 avatar philbudne avatar pkoning2 avatar psco avatar raywjewhurst avatar rcornwell avatar rsanchovilla avatar sethm avatar shattered avatar sparetimegizmos avatar tlhackque avatar trevorwarwick avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

simh's Issues

DZ11 problem in tops10 pdp10

I'm having an issue with connecting to telnet session via dz11.
When I connect I get the simh banner and then nothing...
Tops-10 does not seems to be recognizing the connection...
My monitor works in old 3.9..

any help would be appreciated...

drforbin

pdp11_hk hangs (timeout) while I/O occurring to multiple drives simultaneously

Matt Burke reports:

I first found this problem some time ago whilst running early versions of VMS (1.0, 2.0) from an RK07. I've since been able to replicate the problem with VMS 7.3 running on the latest simulator code. The problem seems to occur when accessing more than one RK device at the same time. See the attached log for an example of the problem

sim> set hk en
sim> set hk0 rk07
sim> set hk1 rk07
sim> att hk0 test1.rk7
sim> att hk1 test2.rk7

(Boot OpenVMS v7.3)

$ INIT DMA0: TEST1
$ INIT DMA0: TEST2
$
$ MOUNT DMA0: TEST1
$ MOUNT DMA1: TEST2
$
$ CREA/DIR DMA0:[SYSEXE]
$ CREA/DIR DMA1:[SYSEXE]
$
$ COPY/LOG SYS$SYSTEM:*.EXE DMA0:[SYSEXE]
%COPY-S-COPIED, SYS$COMMON:[SYSEXE]ACC.EXE;1 copied to DMA0:[SYSEXE]ACC.EXE;1 (71 blocks)
%COPY-S-COPIED, SYS$COMMON:[SYSEXE]ACLEDT.EXE;1 copied to DMA0:[SYSEXE]ACLEDT.EXE;1 (8 blocks)
%COPY-S-COPIED, SYS$COMMON:[SYSEXE]AGEN$FEEDBACK.EXE;1 copied to DMA0:[SYSEXE]AGEN$FEEDBACK.EXE;1 (19 blocks)
... (copy runs smoothly until completion)
%COPY-S-NEWFILES, 228 files created
$
$ SHOW DEV DM

Device Device Error Volume Free Trans Mnt
Name Status Count Label Blocks Count Cnt
OLDVAX$DMA0: Mounted alloc 0 TEST1 18993 1 1
OLDVAX$DMA1: Mounted alloc 0 TEST2 53718 1 1
OLDVAX$DMA2: Online 0
$
$
$ COPY/LOG DMA0:[SYSEXE].;* DMA1:[SYSEXE]
%COPY-S-COPIED, DMA0:[SYSEXE]ACC.EXE;1 copied to DMA1:[SYSEXE]ACC.EXE;1 (71 blocks)
%COPY-S-COPIED, DMA0:[SYSEXE]ACLEDT.EXE;1 copied to DMA1:[SYSEXE]ACLEDT.EXE;1 (8 blocks)
%COPY-S-COPIED, SYS$COMMON:[SYSEXE]AGEN$FEEDBACK.EXE;1 copied to DMA0:[SYSEXE]AGEN$FEEDBACK.EXE;1 (19 blocks)
... (copy hangs for several seconds on some files, but will evetually complete)
Interrupt

$ STOP
$
$ SHOW DEV DM

Device Device Error Volume Free Trans Mnt
Name Status Count Label Blocks Count Cnt
OLDVAX$DMA0: Mounted alloc 0 TEST1 18993 1 1
OLDVAX$DMA1: Mounted alloc 7 TEST2 28230 1 1
OLDVAX$DMA2: Online 0
$
$ ANALYZE/ERROR/SINCE=BOOT/INCLUDE=DM
Error Log Report Generator Version V7.1
******************************* ENTRY 1870. *******************************
ERROR SEQUENCE 5. LOGGED ON: SID 013804D2
DATE/TIME 7-DEC-2011 21:44:07.52 SYS_TYPE 00000000
SYSTEM UPTIME: 0 DAYS 00:01:57
SCS NODE: OLDVAX VAX/VMS V7.3

DEVICE TIMEOUT KA780 HW REV# 7. SERIAL# 1234. MFG PLANT 0.

UBA RK611 SUB-SYSTEM, UNIT _OLDVAX$DMA1:

   RKCS1               04CE
                                   SEEK
                                   INTERRUPT ENABLE
                                   CONTROLLER READY
                                   CONTROLLER DRIVE TYPE RK07
                                   16-BIT FORMAT
   RKWC                0000
   RKBA                0000
   RKDA                0000
                                   SECTOR = 0.
                                   TRACK  = 0.
   RKCS2               0000
                                   SELECTED DRIVE = 0.
   RKDS                0080
                                   DRIVE READY
                                   DRIVE IS RK06
   RKER                0000
   RKAS/OF             0000
   RKDC                0000
   RKMR1               0000
   RKEC1               0000
   RKEC2               0000
   RKMR2               0000
   RKMR3               0000

   UCB$B_ERTCNT          07
                                   7. RETRIES REMAINING
   UCB$B_ERTMAX          08
                                   8. RETRIES ALLOWABLE
   ORB$L_OWNER     00010004
                                   OWNER UIC [001,004]
   UCB$L_CHAR      1CCD4008
                                   DIRECTORY STRUCTURED
                                   FILE ORIENTED
                                   SHARABLE
                                   AVAILABLE
                                   MOUNTED
                                   ERROR LOGGING
                                   ALLOCATED
                                   CAPABLE OF INPUT
                                   CAPABLE OF OUTPUT
                                   RANDOM ACCESS
   UCB$W_STS           1D10
                                   ONLINE
                                   BUSY
                                   DEALLOCATE AT DISMOUNT
                                   SOFTWARE VALID
                                   UNLOAD AT DISMOUNT
   UCB$L_OPCNT     0000006D
                                   109. QIO'S THIS UNIT
   UCB$W_ERRCNT        0001
                                   1. ERRORS THIS UNIT
   UCB$L_MEDIA     00020012
                                   FUNCTION START ADDRESS,
                                    - CYLINDER #2.,
                                    - TRACK #0.,
                                    - SECTOR #18.

   IRP$W_FUNC          000B
                                   WRITE PHYSICAL BLOCK
   IRP$W_BCNT          8000
                                   TRANSFER SIZE 32768. BYTE(S)
   IRP$W_BOFF          0000
                                   TRANSFER PAGE ALIGNED
   IRP$L_PID       00010010
                                   REQUESTOR "PID"
   IRP$Q_IOSB      80000001
                   00000000        IOSB, 32768. BYTE(S) TRANSFERRED

Feature request .....

When defining a register the REG_VMIO flag can be specified in order to cause a register to be displayed and parsed using VM data routines.

The presence of the REG_VMIO flag causes ex_reg() in scp.c to call fprint_sym(). In the function fprint_sym() one can determine that a register is to be displayed by examining the last parameter - sswitch. However, a problem arises then you have more than one register to be displayed using VM data routines as there is no apparent way to differentiate between registers or to tell what register is to be displayed. A solution to this problem is to pass the REG rptr parameter in place of the present UNIT uptr (which is set to NULL when used to print a register.) This would allow fprint_sym() access to the register descriptor pointer and thus allow register differentiation.

ex_reg() scp.c line 4869 currently looks like ...
(fprint_sym (ofile, rdx, &val, NULL, sim_switches | SIM_SW_REG) > 0)) {

This could be changed to ....

  (fprint_sym (ofile, rdx, &val, (UNIT*)rptr, sim_switches | SIM_SW_REG) > 0)) {

Although this is something of a hack, it does allow for the use of multiple registers with the REG_VMIO flag.

Win binaries hang on run / step

Hi Mark,

I downloaded these Win Binaries :

http://cloud.github.com/downloads/simh/simh/simhv39-0-Win32Binaries.zip

From a post you made on the simh list, as I was looking for working networking in Win XP.

Previously I was using the binaries from the main SIMH site, which work, but without networking support. I have OpenVMS 7.3 running on the "old / orig" binaries.

When I try to boot / run / step anything with "new / downloaded" bins, the sim just hangs / freezes. I tried both the vax.exe, and vax780.exe

My MS Win Net directory is :
Directory of C:\WINDOWS\Microsoft.NET\Framework

8/07/2012 12:20 AM

.
8/07/2012 12:20 AM ..
0/11/2011 06:53 PM v3.5
0/11/2011 06:52 PM v3.0
2/06/2012 05:09 PM v2.0.50727
6/11/2011 08:42 PM v1.1.4322
0/11/2011 06:49 PM v1.0.3705
0/07/2012 07:45 PM v4.0.30319

Mike

VAX clock drift

At some (recent) point in time, the VAXen clock drifts away from the real time. I have observed it under x64 Linux and under ARM linux, in all the VAX simulators I run permanently (currently, vax3900, vax8600, vax730 and vax780). Unfortunately I am not able to tell which commit was the first showing the problem, but it is probably not older than a month.

Update: the microvax3900 clock does not seem to drift.

socket problem on RaspberryPi/raspbian

Mark Benson reports:

I have been trying to upgrade my RaspberryPi dedicated machine with the 4.0.0 beta of simh (because it does buffered TELNET and is thus way more useful as a persistent background process) but I hit a snag:

OUTPUT:

MicroVAX 3900 simulator V4.0-0 Beta git commit id: ba09b2d
Logging to file "/var/log/vax/star69.log"
Sockets: socket error 97
/etc/vax/config_daemon.ini-2> set CONSOLE TELNET=13900 File open error /etc/vax/config_daemon.ini-30> set RY disabled Non-existent device
Sockets: socket error 97
/etc/vax/config_daemon.ini-43> attach -am DZ 3900 File open error
NVR: buffering file in memory
libpcap version 1.3.0
Eth: opened OS device eth0

KA655-B V5.3, VMB 2.7 (etc...)

It appears simh is struggling to attach to a telnet port? 3.9.0 worked just dandy.

CONFIG.INI:

set CONSOLE LOG=/var/log/vax/star69.log
set CONSOLE TELNET=13900
; Buffering for TELNET ;
set console TELNET=BUFFERED=65536
; set CONSOLE SERIAL=/dev/ttyAMA0
set CPU 64M
set cpu idle=VMS
set CPU CONHALT
set CR disabled
set DZ lines=8
set LPT disabled
set RL disabled
set RQ0 RA90
set RQ1 RA90
;set RQ2 RA90
set RQ2 disabled
;set RQ3 RA90
set RQ3 disabled
;set RQB enabled
;set RQB0 RA90
;set RQB1 RA90
;set RQB2 RA90
;set RQB3 RA90
set RQC enabled
set RQC0 RRD40
;set RQC1 RRD40
set RQC1 disabled
set RQC2 disabled
set RQC3 disabled
set RY disabled
set TQ disabled
set TQ enabled
set TQ TK70
;set TQ0 format=TPC
set TQ1 disabled
;set TQ0 format=TPC
set TQ1 disabled
set TQ2 disabled
set TQ3 disabled
set TS disabled
set XQ MAC=AA:00:00:00:19:42
;set XQB enabled
;set XQB MAC=AA:00:00:02:30:42
;
attach -am DZ 3900
;
attach NVR /usr/local/vax/nvram.bin
;attach dz line=2,connect=ser0
;
; KDA50 #1
;
attach RQ0 /usr/local/vax/disk/VAXVMS.SYSTEM.DSK
attach RQ1 /usr/local/vax/disk/VAXVMS.DATA01.DSK
;
; RRD50
;
attach RQC0 /usr/local/vax/cdrom/OpenVMS7.3VAX.iso
;attach RQC1 /data/disks/?????????.DSK
;
;attach TQ0 /usr/local/vax/tape/SYSTEM.BCK ; ; load -r /usr/local/vax/ka655x.bin ; attach XQ eth0 ; deposit BDR 0 ; boot CPU ; exit

Mark Benson

PDP-9 Fails MAINDEC-9A-D02A-PH INSTRUCTION TEST PART II

The PDP-9 simulator halts at E1432, /ERROR; RJMP ADDRESS NOT 21
It is testing "XCT-JMS from 20 XCT(17757)".

When it halts 000020 contains 000021 which is correct, but the AC contains 407757 which is not. When you single step the code starting at 003777 when it gets to 004014 the AC contains 000021.

Incorrect behavior:

PDP-9 simulator V4.0-0 Beta git commit id: 8735538
sim> load MAINDEC-9A-D02A-PH_INSTRUCTION_TEST_PART_2.ph -R 22
sim> de pc 6265
sim> go

HALT instruction, PC: 04017 (LAC 6705)
sim> ex ac
AC:     417757


Correct behavior:

sim> de pc 3777
sim> s

Step expired, PC: 04000 (SZA)
sim> s

Step expired, PC: 04002 (LAC 7153)
sim> s

Step expired, PC: 04003 (DAC 6704)
sim> s

Step expired, PC: 04004 (DAC 20)
sim> s

Step expired, PC: 04005 (LAC 7154)
sim> s

Step expired, PC: 04006 (DAC 17757)
sim> s

Step expired, PC: 04007 (LAC 7155)
sim> s

Step expired, PC: 04010 (DAC 21)
sim> s

Step expired, PC: 04011 (JMP 20)
sim> s

Step expired, PC: 00020 (XCT 17757)
sim> s

Step expired, PC: 00021 (JMP 4012)
sim> s

Step expired, PC: 04012 (DZM 6704)
sim> s

Step expired, PC: 04013 (LAC 20)
sim> s

Step expired, PC: 04014 (SAD 6457)
sim> s

Step expired, PC: 04015 (SKP)
sim> s

Step expired, PC: 04017 (LAC 6705)
sim> ex ac
AC: 000021
sim>

The code before the HLT instruction is:

003777 206704 LAC 006704
004000 740200 SZA
004001 740040 HLT
004002 207153 LAC 007153
004003 046704 DAC 006704
004004 040020 DAC 000020
004005 207154 LAC 007154
004006 057757 DAC 017757
004007 207155 LAC 007155
004010 040021 DAC 000021
004011 600020 JMP 000020
004012 146704 DZM 006704
004013 200020 LAC 000020
004014 546457 SAD 006457
004015 741000 SKP
004016 740040 HLT

006457 000021 CAL 000021
006704 000000
007153 417757 XCT 017757
007154 100020 JMS 000020
007155 604012 JMP 004012

Warren and I will post more details about this issue in a few days when we single-step a real PDP-9 to verify the behavior.

DZ11 just lost its vectors

Stock VAX780 on stock slackware 13.37.0 32-bit.

$ vax780

VAX 11/780 simulator V4.0-0 Beta
sim> sh dz
DZ address=2013E040-2013E05F*, , lines=32
not attached, 8b

Unibus/Qbus Multiplexers reference wrong device when multiplexer number is not a power of 2

Each multiplexer device implementation for devices which allow a variable number of lines to be configured (DZ, VH, DL(DLI), DC(DCI) has a macro defined which is used to select the multiplexer number in the device register read and write routines.

The macro works correctly if the number of multiplexers is a power of 2, but incorrectly when it is not. The consequence is that the wrong multiplexer's register state is referenced or manipulated when some multiplexers are references.

Remote console "loops" after executing a command in "WRU" mode

The new remote console is great! But I am experiencing a little annoying bug. If I execute a command in "single command mode" (don't know how to call it :)), it works wonderfully:

Connected to the VAX 11/780 simulator REM-CON device

VAX 11/780 Remote Console
Enter single commands or to enter multiple command mode enter the WRU character
Simulator Running...
sim> show dz
DZ address=2013E048-2013E04F_, vector=C8-CC_, lines=8
attached to 32061,Line=7,Connect=192.168.0.10:32862,32861, 8b, 0 connections

If I press CTL-E and then the command, it enters a character reading loop:

Simulation will resume automatically if input is not received in 30 seconds
sim> show dz
DZ address=2013E048-2013E04F_, vector=C8-CC_, lines=8
attached to 32061,Line=7,Connect=192.168.0.10:32862,32861, 8b, 0 connections
sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim> sim>

If I press "c" (for continue), the loop stops and all goes back to normal.

sim> show ver
VAX 11/780 simulator V4.0-0 Beta
Simulator Framework Capabilities:
64b data
64b addresses
Ethernet support
Idle/Throttling support is available
Virtual Hard Disk (VHD) support
RAW disk and CD/DVD ROM support
Asynchronous I/O support
Asynchronous Clock support
Host Platform:
Compiler: GCC 4.6.3
Simulator Compiled: May 12 2013 at 18:26:54
Memory Access: Little Endian
Memory Pointer Size: 32 bits
Large File (>2GB) support
OS clock tick size: 2ms
OS:
git commit id: 7eb02bf

BTW, it has been compiled with the asynch clock flag.

IBM 1401 does not run tape Autocoder

Reported by Dave Pitts. The assembler halts with an INVALID RECORD LENGTH error. This has been traced to changes introduced in 3.7-2 about behavior on reading a file mark. Each of these behavioral changes fixes the problem:

  1. Transfer nothing into memory. (pre 3.7-2 behavior; but certain diagnostics fail)
  2. Transfer just a TAPMRK character into memory.

Waiting for a test on real 1401 hardware to implement the correct fix.

tx-0 won't build under MinGW compiler


*** tx-0 Simulator being built with:
*** - compiler optimizations and no debugging support. GCC Version: 4.6.1.
*** - dynamic networking support using windows-build provided libpcap components.


*** git commit id is 3bcb6c1.


gcc -std=c99 -U__STRICT_ANSI__ -O2 -finline-functions -fgcse-after-reload -fpredictive-commoning -fipa-cp-clone -fno-unsafe-loop-optimizations -flto -fwhole-program -Wno-unused-result -DSIM_GIT_COMMI
T_ID="3bcb6c1f3d5714c6695e5e8e2ad57ea24c6a3e4f" -I . -fms-extensions -DUSE_READER_THREAD -DPTW32_STATIC_LIB -I../windows-build/pthreads/Pre-built.2/include -DSIM_ASYNCH_IO TX-0/tx0_cpu.c TX-0/tx0_
dpy.c TX-0/tx0_stddev.c TX-0/tx0_sys.c TX-0/tx0_sys_orig.c display/display.c display/win32.c scp.c sim_console.c sim_fio.c sim_timer.c sim_sock.c sim_tmxr.c sim_ether.c sim_tape.c sim_disk.c sim_seria
l.c -I TX-0 -DUSE_DISPLAY -o BIN/tx-0.exe -lm -lwsock32 -lwinmm -lpthreadGC2 -L..\windows-build\pthreads\Pre-built.2\lib -flto -fwhole-program
TX-0/tx0_cpu.c:269:7: error: 'LP' redeclared as different kind of symbol
h:\mingw\bin../lib/gcc/mingw32/4.6.1/../../../../include/winnt.h:125:38: note: previous declaration of 'LP' was here
mingw32-make: *** [BIN/tx-0.exe] Error 1

Using the MinGW compiler's include files, and with GCC as the compiler, LP gets defined in an include file as with the following line:
typedef TCHAR _LPTCH,_PTSTR,_LPTSTR,_LP,*PTCHAR;

The easiest solution is to rename the variable in tx0_cpu.c from LP to something else (like PEN)....

DMC: attempt to get a socket for an unattached DMCx

This one is easy :) The code does not check if the unit is attached and tries all the way to open a socket. Of course, the call fails and a "Sockets: accept error 9" is displayed on console.

I'm not sure which is the better place to put that check. The backtrace driving to the failure point is this one:


Breakpoint 2, dmc_get_receive_socket (controller=0x8120480, forRead=1) at PDP11/pdp11_dmc.c:1571
1571    {
(gdb) backt
#0  dmc_get_receive_socket (controller=0x8120480, forRead=1) at PDP11/pdp11_dmc.c:1571
#1  0x0809826d in dmc_get_socket (controller=0x8120480, forRead=1) at PDP11/pdp11_dmc.c:1565
#2  0x08098c57 in dmc_buffer_fill_receive_buffers (controller=0x8120480) at PDP11/pdp11_dmc.c:1774
#3  0x0809971c in dmc_process_input_transfer_completion (controller=0x8120480) at PDP11/pdp11_dmc.c:2041
#4  0x080999b1 in dmc_process_command (controller=0x8120480) at PDP11/pdp11_dmc.c:2108
#5  0x08099c44 in dmc_wr (data=32900, PA=538173496, access=2) at PDP11/pdp11_dmc.c:2168
#6  0x08071d68 in WriteUb (pa=538173496, val=32900, mode=2) at VAX/vax780_uba.c:497
#7  0x08071e4f in WriteIO (pa=538173496, val=32900, lnt=2) at VAX/vax780_uba.c:548
#8  0x0806a270 in WriteW (pa=538173496, val=32900) at VAX/vax_mmu.c:409
#9  0x08069b16 in Write (va=2196929080, val=32900, lnt=2, acc=16) at VAX/vax_mmu.c:254
#10 0x08050c1b in sim_instr () at VAX/vax_cpu.c:1991
#11 0x080a5641 in run_cmd (flag=4, cptr=0x80d7afe "") at scp.c:3985
#12 0x08070fd9 in vax860_boot (flag=4, ptr=0xbfff8af7 "rq") at VAX/vax860_abus.c:595
#13 0x0809b718 in main (argc=2, argv=0xbfffee34) at scp.c:921

It should probably go in dmc_wr, just to get the error as soon as posible.

Boot problems with ASYNCH enabled in pdp11 and vax* (mac OSX)

Running under MacOS the simulator hangs on boot unless SET NOASYNCH is specified. Observed in:

  • pdp11
  • vax
  • vax780
  • vax860

(I have not tested the other VAXen, but I guess the bug is also there)

No need to specify a fancy configuration, just boot from an RQ device.

The problem seems to be OSX specific. I can boot without problems under Linux/ARM (Rasp-Pi) and Linux/amd64 (Ubunto on macbook).

DZ11 does not work in pdp10

On commit 9356b0c (master branch) the DZ multiplexer seems to not work in the pdp10 simulator:

(on pdp10):

simh jguillaumes$ ./BIN/pdp10

PDP-10 simulator V4.0-0
sim> attach dz 10023
Listening on port 10023 (socket 3)
sim>

(on different terminal):

$ telnet localhost 10023
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.

(and stays here. No "Connected to the PDP-10 simulator..." message). Please beware the inet6 is NOT the issue here.

On commit 84af193 (Extra-VAXen branch):

$ telnet localhost 10023
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.

Connected to the PDP-10 simulator DZ device, line 0

vax780 fails under heavy I/O load / Boot hangs with 'set noasynch'

If I start a task involving heavy I/O load it ends failing and VMS eventually crashes. The failure mode is:

  • First, the terminal session which initiated the task gets filled with garbage.
  • ERRFMT reports it can not write to DISK and ends aborting.
  • DCL Commeands hung or fail with ACCVIO related errors.
  • VMS eventually crashes (not everytime).

This DOES NOT HAPPEN under the 3.9 version. It happens using the Extra-VAXen branch.

Related issue:; the boot process hangs if I do a 'set noasynch' command before booting (to test if the issue is related to the Async IO).

Message samples (this time without SYS$OUTPUT garbage):

$ rdo
RDO> restore tleb01-bck tleb01
cont> .
Backed up by Rdb/VMS V2.3-0 Backup/Restore utility
A component of Rdb/VMS V2.3-0
Previous name was TLEB01
It was logically backed up on 20-NOV-2012 17:11
%%%%%%%%%%% OPCOM 20-NOV-2012 22:45:34.59 %%%%%%%%%%%
Message from user SYSTEM
ERRFMT - ERROR ACCESSING ERROR LOG FILE

%%%%%%%%%%% OPCOM 20-NOV-2012 22:45:34.71 %%%%%%%%%%%
Message from user SYSTEM
ERRFMT - ERROR ACCESSING ERROR LOG FILE

%%%%%%%%%%% OPCOM 20-NOV-2012 22:45:34.74 %%%%%%%%%%%
Message from user SYSTEM
ERRFMT - ERROR ACCESSING ERROR LOG FILE

(... lots and lots of this stuff ...)

%%%%%%%%%%% OPCOM 20-NOV-2012 22:45:35.56 %%%%%%%%%%%
Message from user SYSTEM
ERRFMT - ERROR ACCESSING ERROR LOG FILE

%%%%%%%%%%% OPCOM 20-NOV-2012 22:45:35.57 %%%%%%%%%%%
Message from user SYSTEM
ERRFMT - DELETING ERRFMT PROCESS
ERROR LOG FILE UNWRITABLE
TO RESTART ERRFMT PROCESS, USE "@sys$SYSTEM:STARTUP ERRFMT"

%%%%%%%%%%% OPCOM 20-NOV-2012 22:45:35.62 %%%%%%%%%%%
Message from user JOB_CONTROL

%%%%%%%%%%% OPCOM 20-NOV-2012 22:45:35.73 %%%%%%%%%%%

Message from user JOB_CONTROL

At that point the simulator eats as much host CPU as it can... Sometimes it crashes (this time I was not lucky, so I can't get anything from SDA).

My vax780.ini:

;set cpu conhalt
set cpu idle=vms
;dep bdr 0
;set console telnet=10026

set rp0 rp06
set rp1 rp06

attach rp0 ./RP06.000
attach rp1 ./RP06.001
set rp2 disable
set rp3 disable
set rp4 disable
set rp5 disable
set rp6 disable
set rp7 disable

set rl enable
set rl0 rl02
set rl1 rl02
set rl2 disable
set rl3 disable

;
deposit rp rtime 30
; Per evitar que es pengi al boot

set xu enable
attach xu vde:/tmp/vde.ctl

;set dz 7b
set dz lines=8
att -am dz 32123
att lpt ./vms-printer.txt

set ts enable
;attach ts ./scratch-tape.tap

set hk disable
set rq disable
set tq disable
set tu disable

SIGSEGV failures in pdp11 code

I have found several SIGSEGV aborts in the pdp11 simulator (master HEAD in the repo). The easier to reproduce is this one:

  • Boot standalone BRU
  • Attach TS0 to a new file, and KEEP IT WRITE LOCKED
  • Try to write to TS0.
  • Boom!

I have observed other unexpected SIGSEGVs but this one can be reproduced consistently.

Here is a console log:

sim> att ts0 brusys.tap
sim> show ts
TS, address=17772520-17772523, vector=224, attached to brusys.tap, write locked, SIMH format, unlimited capacity
sim> show rp
RP, Massbus adapter 0, 8 units
RP0, 87MW, attached to RP06.000, write enabled, RP06
RP1, 43MW, attached to RP04.001, write enabled, RP04
RP2, 33MW, not attached, write enabled, autosize
RP3, 33MW, not attached, write enabled, autosize
RP4, 33MW, not attached, write enabled, autosize
RP5, 33MW, not attached, write enabled, autosize
RP6, 33MW, not attached, write enabled, autosize
RP7, 33MW, not attached, write enabled, autosize
sim> b ts

RSX-11M/RSX-11M-PLUS STANDALONE COPY SYSTEM V4.8

RSX-11M/RSX-11M-PLUS Standalone Configuration and Disk Sizing Program

Valid switches are:
/CSR=nnnnnn to change the default device CSR
/VEC=nnn to change the default device vector
/FOR=n to change the default magtape formatter number
/DEV to list all default device CSR and vectors

Enter first device: ms0:

Enter second device: db0:

Hit RETURN and enter date and time as 'TIM HH:MM MM/DD/YY'

Simulation stopped, PC: 001344 (CLRB (R1)+)
sim> att ts0 newtape.tap
TS: creating new file
sim> show ts0
TS0, attached to newtape.tap, write locked, SIMH format, unlimited capacity
sim> c

run bru

BRU>
From: db0:
To: ms0:
BRU -- WARNING -- Volume write locked

BRU -- WARNING -- Mount another tape
Violació de segment

ibm1130_sca.c sca_attach argument errors in calls to select()

Calls to sim_connect_sock() create a non-blocking socket and leave details of checking and/or determining the connect success status to the caller using bare socket calls.

sim_sock.c should expose APIs to deal with these issues

sim_connect_socket() is called in altairz80_net.c and ibm1130_sca.c and hp2100_ipl.c. These need to properly handle the potential return conditions of this call.

simh / IPv4 and IPv6

On a PC with both IPv4 and IPv6 active I attached DZ:

ATT DZ 611

After not being able to connect like I used to, I had a look at netstat:

TCP [::]:611 [::]:0 LISTEN

This looks like IPv6, doesn't it?

I didn't find anything about IPv6 usage in simh neither with SHOW MOD
nor in the docs.

Can this behaviour (preferring IPv6 if available) be switched off?

Regards,

Ulli

SIGABRT crash reattaching RQ unit in vax860

This has happened to me in several ocasions. It does NOT however happen every time I reattach:

(RQ3 is attached to an ISO file residing in a DVD; I was reattaching it to another ISO)

$ dismo dua3:
$
Simulation stopped, PC: 8032EADF (BBC #3,26C(R3),8032EB1C)
sim> att rq3 /Volumes/VAX981/VAXBINJUN98
/Volumes/VAX981/VAXBINJUN981.iso /Volumes/VAX981/VAXBINJUN982.iso
/Volumes/VAX981/VAXBINJUN983.iso /Volumes/VAX981/VAXBINJUN984.iso
/Volumes/VAX981/VAXBINJUN985.iso /Volumes/VAX981/VAXBINJUN986.iso
sim> att rq3 /Volumes/VAX981/VAXBINJUN985.iso
RQ3: unit is read only
Abort trap: 6

Crash captured by OSX:

Process: vax860 [65755]
Path: /Users/USER/Documents/*/vax860
Identifier: vax860
Version: 0
Code Type: X86-64 (Native)
Parent Process: bash [64507]
User ID: 501

Date/Time: 2013-01-20 14:40:30.886 +0100
OS Version: Mac OS X 10.8.2 (12C60)
Report Version: 10

Interval Since Last Report: 90618 sec
Crashes Since Last Report: 14
Per-App Crashes Since Last Report: 4
Anonymous UUID: AAA2980B-4524-F37E-6BF6-15E47F68EA09

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff8c5bb0fa __psynch_cvwait + 10
1 libsystem_c.dylib 0x00007fff9611bf89 _pthread_cond_wait + 869
2 vax860 0x00000001045780f7 sim_disk_set_async + 183
3 vax860 0x000000010457a5c1 sim_disk_attach + 7937
4 vax860 0x0000000104532a02 rq_attach + 98
5 vax860 0x000000010455888d attach_cmd + 445
6 vax860 0x00000001045601ac main + 2140
7 libdyld.dylib 0x00007fff8c0647e1 start + 1

Thread 1:
0 libsystem_kernel.dylib 0x00007fff8c5bb322 __select + 10
1 vax860 0x000000010456ea89 _eth_reader + 473
2 libsystem_c.dylib 0x00007fff96117742 _pthread_start + 327
3 libsystem_c.dylib 0x00007fff96104181 thread_start + 13

Thread 2:
0 libsystem_kernel.dylib 0x00007fff8c5bb0fa __psynch_cvwait + 10
1 libsystem_c.dylib 0x00007fff9611bf89 _pthread_cond_wait + 869
2 vax860 0x000000010456d820 _eth_writer + 320
3 libsystem_c.dylib 0x00007fff96117742 _pthread_start + 327
4 libsystem_c.dylib 0x00007fff96104181 thread_start + 13

Thread 3:
0 libsystem_kernel.dylib 0x00007fff8c5bb0fa __psynch_cvwait + 10
1 libsystem_c.dylib 0x00007fff9611bf89 _pthread_cond_wait + 869
2 vax860 0x0000000104578232 _disk_io + 226
3 libsystem_c.dylib 0x00007fff96117742 _pthread_start + 327
4 libsystem_c.dylib 0x00007fff96104181 thread_start + 13

Thread 4:
0 libsystem_kernel.dylib 0x00007fff8c5bb0fa __psynch_cvwait + 10
1 libsystem_c.dylib 0x00007fff9611bf89 _pthread_cond_wait + 869
2 vax860 0x0000000104578232 _disk_io + 226
3 libsystem_c.dylib 0x00007fff96117742 _pthread_start + 327
4 libsystem_c.dylib 0x00007fff96104181 thread_start + 13

Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x0000000000000000 rbx: 0x0000000100000100 rcx: 0x00007fff5b6f4918 rdx: 0x0000000000000000
rdi: 0x00007fbf5840fb08 rsi: 0x0000000100000100 rbp: 0x00007fff5b6f49d0 rsp: 0x00007fff5b6f4918
r8: 0x0000000000000000 r9: 0x0000000000000060 r10: 0x0000000000000000 r11: 0x0000000000000202
r12: 0x0000000000000001 r13: 0x0000000000000000 r14: 0x00007fff7c048180 r15: 0x00007fbf5840fa68
rip: 0x00007fff8c5bb0fa rfl: 0x0000000000000202 cr2: 0x000000010ee7e880
Logical CPU: 0

Apple xcode build

Just pulled the master and created an xcode project file to build the makefile. Compared to a week ago it builds much cleaner but I still get 3 warnings that can easily be addressed:

sim_ether.c#667 static eth_open_device_count = 0; -- add int/unsigned to fix

pdp11_xq.c#705 fprintf(st, " [%2d]: %s\n", i, buffer); -- use '%2xd' or '(int)i' to fix

scp.c#2040 { "ETHERNET", &eth_show_devices, 0 }, --not sure the best way to fix but I changed the 'desc' argument type to 'char_' and used a cast to '(void_)' in eth_show_devices().

Have to admit I am a novice at this but hopefully the input is useful.. I can also contrute the xcode project file if you are interested.

BTW, my interest in this is that I found this repo after I have been using the PDP11 v3.0-2 with Phil Bunde's VT11 patches. I fixed a couple of bugs in Phil's code so that the PDP11 Moonlander game runs correctly (dust and explosions were broken because of bugs in graphic point modes). I would be interested if anyone is interested in the VT11 simulation (I sent Phil the fixes but never heard back).

req/idea - Version string

It would be helpful if the VAX simulator V3.9-0 msg was updated to indicate a difference from the "original" binaries on the SIMH site.

Mike

req / discuss - tracing and/or increase history buffer size

Hi Mark,

A trace function would be a great addition to the sim.

As the s(tep) and set cpu history commands already know how to output "trace" info, which, do you think would be easier to modify / use for a trace function?

In the meantime, it would be very helpful to increase the history buffer size, for a "fake trace".

I'm only interested in the vax.exe for now, what do I need to change ?

It looks like it's just HIST_MAX in vax_cpu.c ?

I guess 2,147,483,647 would be the maximum ?

Probably a "bit" bigger than I need :), though a couple million would be helpful.

I'll try changing it with MingW.

Mike

tx-0 (1956) operator timing

LMB and MLR both occur at clock 1.3 which means that they should swap, because one of them (LMB) is at clock 1.2 in the code it won't work

Problem attaching VHD disk image

After this commit: 3d3f757

A disk image which works perfectly in previous commits cannot be attached and causes SEGFAULTS:

sim> att rq0 -F VHD RA81.000
Invalid argument
sim> att rq0 RA81.000
sim>
sim> det rq0

Creating a new VHD file does not work either:

PDP-11 simulator V4.0-0 Beta git commit id: 3d3f757
sim> att rq0 -F VHD new.disk
Invalid argument

(This happens with a clean config, no setup file)

The previous commit (6319996) works:

PDP-11 simulator V4.0-0 Beta git commit id: 6319996
sim> attach rq0 -F VHD RA81.000
sim> show rq0
RQ0 456MB, attached to RA81.000, write enabled
RA81, autosize, VHD format
sim> det rq0
sim> att rq0 -F VHD new.disk
RQ0: creating new file
sim> show rq0
RQ0 456MB, attached to new.disk, write enabled
RA81, autosize, VHD format

make error

all Simulators being built with:
*** - compiler optimizations and no debugging support. GCC Version: 4.2.1.
*** - dynamic networking support using OSX provided libpcap components.


make: Nothing to be done for `all'.

PDP11 TA11 does not run CAPS-11

Reported by Ian Hammond. The TA11 cassette emulator does not run CAPS-11 or the RT-11 driver. The problem, apparently, is that RDY is not set at the completion of certain operations. Ian has a suggested source update but has not sent it in.

Self-test 55 fails booting vax (3900 simulator) on MacOS

Another one which seems to be OSX specific. After BOOting cpu, the self-test complains:

VAX simulator V4.0-0 Beta
sim> b cpu
Loading boot code from ka655x.bin
Saving boot code to ka655x.bin
Loading boot code from ka655x.bin

KA655-B V5.3, VMB 2.7
Performing normal system tests.
40..39..38..37..36..35..34..33..32..31..30..29..28..27..

?55 2 02 FE 00 0000

P1=00000000 P2=00000028 P3=00000002 P4=00D40077 P5=00000002
P6=FFFFFFFF P7=00000000 P8=00000000 P9=00000000 P10=20051CE0
r0=200551BE r1=00000027 r2=00000055 r3=20140784 r4=2004EA6B
r5=2004EA8C r6=200551C5 r7=00000000 r8=00000000 ERF=80000000
26..25..
24..23..22..21..20..19..18..17..16..15..14..13..12..11..10..09..
08..07..06..05..04..03..
Normal operation not possible.

This happens WITHOUT ANY INI FILE, just starting the simulator in a clean directory. If you proceed with the boot (ignoring the "normal operation not possible" message) it seems to proceed normally.

Test 55 is the "Interval Timer" test, and it fails consistently:

t 55

?55 2 02 FE 00 0003

P1=00000000 P2=FFFFFFFF P3=00000000 P4=00000000 P5=00000000
P6=00000000 P7=00000000 P8=00FC0000 P9=303FFE00 P10=00001FFF
r0=000000B5 r1=2004BC00 r2=201405AD r3=00000055 r4=2004EA6B
r5=2004EA8C r6=00000000 r7=00000000 r8=FFFFFFFF ERF=80000000

Normal operation not possible.

_FORTIFY_SOURCE indicates presence of overflow

Some kind of "repost" from https://bugs.gentoo.org/show_bug.cgi?id=421809 :

You're receiving this bug because the package in Summary has produced _FORTIFY_SOURCE related warnings indicating the presence of a sure overflow in a static buffer.

Even though this is not always an indication of a security problem it might even be. So please >check this out ASAP.

By the way, _FORTIFY_SOURCE is disabled when you disable optimisation, so don't try finding >out the cause using -O0.

mkdir BIN race condition in parallel make

If invoked with make -j2 the test

MKDIRBIN = if $(TEST) ! -e BIN; then mkdir BIN; fi

is executed in parallel and most likely to fail on with

mkdir: cannot create directory `BIN': File exists

Regular linux/coreutils accept mkdir -p
" -p, --parents
no error if existing, make parent directories as needed"
.

Please consider adding following patch (authored by my for Gentoo)
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-emulation/simh/files/simh-3.9.0-fix-mkdir-race.patch?revision=1.1&view=markup

req - Win build instructions

Mark,

I have a couple of ideas I'd like to add to the sim.

Can you post build instructions for win XP (if there is anything particular for XP), using either MS Express ver ??, or the build environment of choice?

What are you using to build the Win binaries ?

Mike

PDP11 MMR1 implementation incorrect

Reported by Ian Hammond. MMR1 is being updated on PC changes, which is not correct for any PDP-11. Further, MMR1 is being set for address modifications by floating-point instructions. The J11, at least, backs out changes before reporting a floating-point abort or exception, because MMR1 doesn't have enough bits to support floating double length register modifications.

DZ11 Acts strangely / doesn't work

https://github.com/jguillaumes reported this originally in the PDP10 auto configuration issue #22

This could be related to a PDP-11 issue I noticed yesterday (I was about to open a new issue about it, but it could be the same problem as this one). Given this sequence of operations:

  1. Boot RSX11M46+ (in my setup, I boot if from RP0)
  2. Attach the DZ device to a local port
  3. TELNET to this local port. The simulator connects to line 0, RSX shows its prompt and lets you log on.
  4. Close the telnet session (after logging off from RSX)
  5. TELNET again. The simulator connects you again to line 0 (as it shoud do), but RSX DOES NOT gives you a prompt.

You can TELNET again an get line 1 to log in, but if you log off and try to connect again you will find the same in line 1. Sucessively, all the DZ "lines" will become wrecked.

Apparently, the lines do not get disconnected from the DZ:

sim> show dz conn
line 0: Connection from IP address 127.0.0.1
Connected 00:04:12
Telnet protocol
line 1: Connection from IP address 127.0.0.1
Connected 00:00:54
Telnet protocol
line 2: Connection from IP address 127.0.0.1
Connected 00:00:43
Telnet protocol
line 3: Connection from IP address 127.0.0.1
Connected 00:00:33
Telnet protocol
sim>

I'll try to summarize what I see:

RSX-11M+ 4.6: The observed behaviour is consistent with or without -AM in the attach command. It used to work in 3.9 (I can try to dig up the source history to find the commit which broke it).

$ telnet localhost 32023
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.

Connected to the VAX860 simulator DZ device, line 0

    Welcome to VAX/VMS V5.5-2

Username: SYSTEM
Password:
Welcome to VAX/VMS version V5.5-2 on node BITXOW
Last interactive login on Wednesday, 23-JAN-2013 15:12
Last non-interactive login on Sunday, 20-JAN-2013 20:34
$ show term
Terminal: _TTA0: Device_Type: VT200_Series Owner: SYSTEM

Input: 9600 LFfill: 0 Width: 80 Parity: None
Output: 9600 CRfill: 0 Page: 24

Terminal Characteristics:
Interactive Echo Type_ahead No Escape
No Hostsync TTsync Lowercase Tab
Wrap Scope No Remote Eightbit
Broadcast No Readsync No Form Fulldup
No Modem No Local_echo Autobaud No Hangup
No Brdcstmbx No DMA No Altypeahd Set_speed
No Commsync Line Editing Overstrike editing No Fallback
No Dialup No Secure server No Disconnect No Pasthru
No Syspassword No SIXEL Graphics Soft Characters Printer port
Numeric Keypad ANSI_CRT No Regis No Block_mode
Advanced_video Edit_mode DEC_CRT DEC_CRT2
No DEC_CRT3 No DEC_CRT4 VMS Style Input
Then, what happens is this:

$ logout
SYSTEM logged out at 23-JAN-2013 15:20:03.81
telnet> close
Connection closed.
Macjordi:~ jguillaumes$ telnet localhost 32023
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.

Connected to the VAX860 simulator DZ device, line 0
And, like in the PDP11 case, it stops working. Let's try another thing:

telnet localhost 32023
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.

Connected to the VAX860 simulator DZ device, line 1

    Welcome to VAX/VMS V5.5-2

Username: SYSTEM
Password:
Welcome to VAX/VMS version V5.5-2 on node BITXOW
Last interactive login on Wednesday, 23-JAN-2013 15:20
Last non-interactive login on Sunday, 20-JAN-2013 20:34
$
$ set term/hangup
$ logout
SYSTEM logged out at 23-JAN-2013 15:22:52.43
telnet> close
Connection closed.
Macjordi:~ jguillaumes$ telnet localhost 32023
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.

Connected to the VAX860 simulator DZ device, line 1

Stuck again. Let's try it without -AM:

(I dispense you of the pasted text)

... It happens just the same!

So it seems to work equally well (or bad) in vax (testing with vax860)

Provide an sane way to pass CFLAGS/LDFLAGS

I did some testing to pass Gentoo CFLAGS and LDFLAGS to the build system and
decided to use LDFLAGS_O and CFLAGS_O. (We use them to pass -O? -g -ggdb -m32/-m64 et al. upon user request)

Please consider following patch to respect these flags, iff set in the environment.

http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-emulation/simh/files/simh-3.9.0-respect-FLAGS.patch?revision=1.1&view=markup

Since you alter LDFLAGS_O internally, make LDFLAGS_O=... fails.

Bye

p.s. see the exports and make call in src_compile() at lines 39ff

http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-emulation/simh/simh-3.9.0.ebuild?revision=1.1&view=markup

Erratic behaviour of DMCx devices

The DMC devices apparently stopped working correctly in the commit d964df4 . From that commit to the current HEAD the behaviour of the DMC devices is erratic:

  • Sometimes they simply do not establish connection with the peer.
  • Sometimes they bounce the circuit on and off
  • Sometimes the router nodes using DMC do not get the full list of the area nodes.

The circuit drops appear both associated to listener timeouts and to wrong packets:

%%%%%%%%%%% OPCOM 12-MAY-2013 20:49:16.89 %%%%%%%%%%%
Message from user DECNET on BTES03
DECnet event 4.18, adjacency down
From node 7.903 (BTES03), 12-MAY-2013 20:49:16.89
Circuit DMC-0, Unexpected packet type, Adjacent node = 7.61 (BITXOO)
Packet beginning = 013D1C0640020200000F000080010001

$
%%%%%%%%%%% OPCOM 12-MAY-2013 20:50:10.09 %%%%%%%%%%%
Message from user DECNET on BTES03
DECnet event 4.10, circuit up
From node 7.903 (BTES03), 12-MAY-2013 20:50:10.09
Circuit DMC-0, Adjacent node = 7.61 (BITXOO)

$
$
%%%%%%%%%%% OPCOM 12-MAY-2013 20:50:41.57 %%%%%%%%%%%
Message from user DECNET on BTES03
DECnet event 4.18, adjacency down
From node 7.903 (BTES03), 12-MAY-2013 20:50:41.56
Circuit DMC-0, Adjacent node listener receive timeout
Adjacent node = 7.61 (BITXOO)

$
%%%%%%%%%%% OPCOM 12-MAY-2013 20:51:08.15 %%%%%%%%%%%
Message from user DECNET on BTES03
DECnet event 4.10, circuit up
From node 7.903 (BTES03), 12-MAY-2013 20:51:08.15
Circuit DMC-0, Adjacent node = 7.61 (BITXOO)

The previous commit (ddb1042) works OK. Doing a git diff I see you did some housekeeping, and I'm unable to see anything obvious.

BTW, these are the show version and show config outputs for both ends:

  1. "failing" end (vax780 simulator running under MacOS):

sim> show ver
VAX 11/780 simulator V4.0-0 Beta
Simulator Framework Capabilities:
64b data
64b addresses
Ethernet support
Idle/Throttling support is available
Virtual Hard Disk (VHD) support
Asynchronous I/O support
Host Platform:
Compiler: GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Simulator Compiled: May 12 2013 at 21:04:48
Memory Access: Little Endian
Memory Pointer Size: 64 bits
Large File (>2GB) support
OS clock tick size: 2ms
OS: Darwin macjordi.jguillaumes.dyndns.org 12.3.0 Darwin Kernel Version 12.3.0: Sun Jan 6 22:37:10 PST 2013; root:xnu-2050.22.13~1/RELEASE_X86_64 x86_64

    git commit id: d964df4e

Darwin macjordi.jguillaumes.dyndns.org 12.3.0 Darwin Kernel Version 12.3.0: Sun Jan 6 22:37:10 PST 2013; root:xnu-2050.22.13~1/RELEASE_X86_64 x86_64
sim> show config
VAX 11/780 simulator configuration

CPU idle=VMS, idle enabled, model=VAX 11/780
8192KB, HALT to console
TLB 2 units
TLB0 8192W
TLB1 8192W
SBI
MCTL0 nexus=1
MCTL1 nexus=2
UBA nexus=3, autoconfiguration enabled
MBA0 disabled
MBA1 disabled
TODR
8B, attached to todr_clock.dat
TMR
TTI
8b
TTO
8b
CS
256KB, not attached, write enabled
DZ address=2013E048-2013E04F_, vector=C8-CC_, lines=8
attached to 32903, 8b, 0 connections
VH disabled
CR address=2013FE70-2013FE77, vector=98, 285 cards per minute
translation=029
not attached, CR11, auto EOF
unknown format
LPT address=2013FF4C-2013FF4F, vector=80
attached to ./vms-printer.txt
RP disabled
RL address=2013F900-2013F909, vector=70, 4 units
RL0 5242KW, not attached, on line
write enabled, RL02
RL1 5242KW, not attached, on line
write enabled, RL02
HK disabled
RQ address=2013F468-2013F46B, vector=1FC_, UDA50, 4 units
RQ0 456MB, attached to RA81.000, write enabled
RA81, autosize, SIMH format
RQ1 159MB, not attached, write enabled
RD54, autosize, SIMH format
RQ2 159MB, not attached, write enabled
RD54, autosize, SIMH format
RQ3 800KB, not attached, write enabled
RX50, autosize, SIMH format
RQB disabled
RQC disabled
RQD disabled
RY 2 units
RY0 512KB, not attached, write enabled
double density
RY1 512KB, not attached, write enabled
double density
TU disabled
TS address=2013F550-2013F553, vector=94
not attached, write enabled, SIMH format
unlimited capacity
TQ disabled
XU address=2013F948-2013F94F, vector=50, MAC=08:00:2B:00:09:03
type=DELUA
not attached
XUB disabled
DMC0 peer=192.168.0.8:32613, speed=0 (unrestricted), linemode=PRIMARY
connectpoll=30, address=2013E038-2013E03F_, vector=C0-C4*
attached to 33903
DMC1 disabled
DMC2 disabled
DMC3 disabled

  1. "Working" end (VAX780 running under raspbian):

sim> show ver
VAX 11/780 simulator V4.0-0 Beta
Simulator Framework Capabilities:
64b data
64b addresses
Ethernet support
Idle/Throttling support is available
Virtual Hard Disk (VHD) support
RAW disk and CD/DVD ROM support
Asynchronous I/O support
Host Platform:
Compiler: GCC 4.6.3
Simulator Compiled: May 7 2013 at 12:18:01
Memory Access: Little Endian
Memory Pointer Size: 32 bits
Large File (>2GB) support
OS clock tick size: 2ms
OS:
git commit id: 9faef6e
sim> show conf
VAX 11/780 simulator configuration

CPU idle=VMS, idle enabled, model=VAX 11/780
8192KB, HALT to console
TLB 2 units
TLB0 8192W
TLB1 8192W
SBI
MCTL0 nexus=1
MCTL1 nexus=2
UBA nexus=3, autoconfiguration enabled
MBA0 disabled
MBA1 disabled
TODR
8B, attached to todr_clock.dat
TMR
TTI
8b
TTO
8b
CS
256KB, not attached, write enabled
DZ disabled
VH address=2013E140-2013E14F_, vector=E8-EC_, lines=16
attached to 32023, DHU mode, Modem
Hangup, 1 connection
CR address=2013FE70-2013FE77, vector=98, 285 cards per minute
translation=029
not attached, CR11, auto EOF
unknown format
LPT address=2013FF4C-2013FF4F, vector=80
attached to ./vms-printer.txt
RP disabled
RL address=2013F900-2013F909, vector=70, 4 units
RL0 5242KW, not attached, on line
write enabled, RL02
RL1 5242KW, not attached, on line
write enabled, RL02
HK disabled
RQ address=2013F468-2013F46B, vector=1FC_, UDA50, 4 units
RQ0 300MB, attached to RA81.000, write enabled
RD54, autosize, VHD format
RQ1 456MB, attached to RA81.001, write enabled
RD54, autosize, VHD format
RQ2 159MB, not attached, write enabled
RD54, autosize, SIMH format
RQ3 800KB, not attached, write enabled
RX50, autosize, SIMH format
RQB disabled
RQC disabled
RQD disabled
RY 2 units
RY0 512KB, not attached, write enabled
double density
RY1 512KB, not attached, write enabled
double density
TU disabled
TS address=2013F550-2013F553, vector=94
not attached, write enabled, SIMH format
unlimited capacity
TQ disabled
XU address=2013F948-2013F94F, vector=50, MAC=08:00:2B:CC:DD:EE
type=DELUA
attached to vde:/tmp/vde.ctl
XUB disabled
DMC0 peer=192.168.0.4:32610, speed=0 (unrestricted), linemode=SECONDARY
connectpoll=30, address=2013E038-2013E03F_, vector=C0-C4*
attached to 32610
DMC1 peer=192.168.0.102:32611, speed=0 (unrestricted), linemode=SECONDARY
connectpoll=30, address=2013E040-2013E047_, vector=C8-CC_
attached to 32611
DMC2 peer=192.168.0.10:32610, speed=0 (unrestricted), linemode=SECONDARY
connectpoll=30, address=2013E048-2013E04F_, vector=D0-D4_
attached to 32612
DMC3 peer=192.168.0.2:33903, speed=0 (unrestricted), linemode=SECONDARY
connectpoll=30, address=2013E050-2013E057_, vector=D8-DC_
attached to 32613

The issue appears also with both peers running under raspbian... I just moved the "test" part to the mac because it compiles quite faster :)

tx-0 carry calculation

I am writing a tx0 emulator (if you wondered) in Java. I notice you left out the carry calculation (other than the assumption that PAD ; CARRY == full add)

This is my function to calculate Carry(ac,mbr). This was done partly by following the documents and partly by trial and error. Whilst the end-around carry after XOR isnt specified in the documents anywhere doing it this way passes extensive testing based around PAD;CARRY producing the identical result to the standard 18 bit add with end around carry. If you do what the documentation implies (do the end around carry before the final XOR) it doesn't work :(

Whether any code would ever do CARRY without a corresponding PAD is somewhat debatable. I've written quite a few emulators for various machines and have learnt never to assume developers won't do something mad :)

/**
 * Calculate the Carry value (the OPR function). This was done somewhat by trial and error as it's
 * not very clear how it is calculated at the end. 
 * 
 * This is tested by the "CarryTest" class which takes advantage of the PAD ; CARRY operations being
 * the same as a full add.
 */

protected int calculateCarry(int ac,int mbr) {
    int carry = 0;
    for (int i = 0;i < 18;i++) {                                                // Do one bit at a time.
        int bitMask = (1 << i);                                                 // Calculate mask.
        boolean carryOut = false;
        if ((ac & bitMask) == 0 && (mbr & bitMask) != 0) carryOut = true;       // Carry if bit is 0 in AC and 1 in MBR
        if ((ac & bitMask) != 0 && (carry & bitMask) != 0) carryOut = true;     // Carry if bit is 1 in AC and 1 in Carry
        if (carryOut) carry |= (bitMask << 1);                                  // Set next carry bit round.                                    
    }
    carry = carry ^ ac;                                                         // Do the XOR with the AC
    if (carry > MASK_LOWER_18_BIT) carry = (carry+1) & MASK_LOWER_18_BIT;       // Do the end around increment (it doesn't work if you do it any other way)
    return carry;
}

PDP11: SAV /WB fails and renders an unbootable disk

After SYSGENing a new executive and BOOting it from [1,54]RSX11M. the SAV /WB command fails and leaves an unbootable disk. Both the boot attempt after SAV and any further boot attemps fail with:

>
 sav /wb
Trap stack push abort, PC: 127006 (WAIT)         

This works with simh 3.9.

tx-0 augment index faulty

tx0_cpu.c line 655 (augment index)

it looks like :

655 - compact y value (instruction address part) down from 18 bits to 14 bits -> newY
657 - add newY to XR directly.

what it should do :

a) Read the address in Memory (e.g. Read() with MAR = y & 13 bit mask)
b) Construct the augment value out of the sign bit and the the lsbs (similar to 655 but with the read value in the MBR)
c) Do a 1's complement addition of index register and augment value

Ref M-5001-27-4_TX-0_Inst_Sep66.pdf page 4

Errors seem to be (I think)

  1. not reading the memory location using y itself rather than C(Y) for the augmenting value
  2. not adding in the carry out from the 14th bit of the augmentation which will break negative augmenting amongst other things.

Apologies if I've misread your code !

Feature request .....

Hi, I am currently working on a simh-based simulator for the old 36-bit Honeywell dps-8/m mainframe which I hope to eventually boot Multics on. I am excited to see a v4 up and coming and am looking forward to migrating to it. In my work with simh I would like to request 2 features.

  1. To allow register names to contain an embedded "." I currently have register names like BSD.STACK, TPR.PSR, SDW.P, etc. I have modified scp.c to allow for this and there seem to be no unintended side-effects.

  2. Allow for user supplied commands to override, built-ins. E.g. To load data into my emulator I currently say something like "LOAD Play.oct" which loads an octal file into my simulator for execution. I would like to be able to say something like "load segment Play into address 12345". The present implementation of the "load" command barfs on this syntax. The command processor could be modified to first call user-supplied extensions and if the syntax doesn't fit the user-extension, the extension could return a "not processed" code and then try the built-in version. I could code this functionality if desired.

Regards,
Harry Reed

RQ I/O error: No space left on device

SimH/VAX 3.9-0 crashed - No space on device

RQ I/O error: No space left on device

I/O error, PC: 9AD77D58 (CMPL R0,R6)

I do not see any other reports of this, and am trying to figure out how to troubleshoot it.

It has happened twice in a rwo while building bash 4.2.45 on VAX/VMS 7.3 on the same step, after several other successful builds of it a few days before.

EDIT/TPU/SECT=EVE$SECTION/NODISP /COMM=prj_root:unix_c_to_vms_c.tpu SRC_ROOT:EXECUTE_CMD.C/OUT=LCL_ROOT:EXECUTE_CMD.C /init='f$element(1, ",", "SRC_ROOT:EXECUTE_CMD.C,EXECUTE_CMD.TPU")'
5200 lines read from file SRC_ROOT:[BASH]EXECUTE_CMD.C;1
EDT keypad defined (for more information, see help on EDT DIFFERENCES).
1337 lines read from file VMS_ROOT:[BASH]EXECUTE_CMD.TPU;1
[Output of session stops]

I have not found what device it is complaining about. My current action is to apply all the updates to the Ubuntu (Metro) interface that have queued up over the last few months and reboot it and try it again. The Ubuntu version shows as "3.2.0-35-generic #55 Ubuntu i686"

The microvax2 mouse does not work with the QVSS display

Compiling a microvax2 with the QVSS display under Ubuntu on a laptop was successful. Booting an image for my VAXStation 3100 with VAX/VMS 5.5-2 with device XQA0 was also successful and it was possible to login at the DECWindows login screen and the usual windows appeared - great!!!

Unfortunately, the mouse does not work (moving and clicking), although with ctrl-right-shift the mouse releases. I have verified that DECW$DEVICE.COM finds the GCA2: device for the pointer, which is online and has zero error count.

Is there anything I can try or (re)configure apart from trying a fresh install?

Here is the version and device information:

sim> show version
VAXStation II (KA630) simulator V4.0-0 Beta
Simulator Framework Capabilities:
64b data
64b addresses
Ethernet support
Idle/Throttling support is available
Virtual Hard Disk (VHD) support
RAW disk and CD/DVD ROM support
Asynchronous I/O support
Host Platform:
Compiler: GCC 4.7.2
Simulator Compiled: Jun 15 2013 at 21:25:00
Memory Access: Little Endian
Memory Pointer Size: 64 bits
Large File (>2GB) support
SDL Video support: SDL Version 1.2.15
OS clock tick size: 2ms
OS: Linux aspire 3.5.0-34-generic #55-Ubuntu SMP Thu Jun 6 20:18:19 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

    git commit id: 5fba42a0

sim> show dev
VAXStation II (KA630) simulator configuration

CPU idle=VMS, idle enabled, model=VAXstation II, DIAG=min
NOAUTOBOOT
TLB 2 units
ROM
NVR
WTC time=vms
SYSD
QBA autoconfiguration enabled
CLK
TTI vector=F8
TTO vector=FC
DZ address=20000040-2000005F_, vector=2C0-2DC_, lines=16
VH disabled
CR address=20001E70-20001E77, vector=298, 285 cards per minute
translation=029
LPT address=20001F4C-20001F4F, vector=280
LK
VS
QVSS ReleaseKey=Ctrl-Right-Shift, address=20001E80-20001EBF, vector=240
RL address=20001900-20001909, vector=270, 4 units
RQ address=20001468-2000146B, vector=26C, RQDX3, 4 units
RQB disabled
RQC disabled
RQD disabled
TS address=20001550-20001553, vector=294
TQ TK50 (94MB), address=20001940-20001943, vector=2B0, 4 units
XQ address=20001920-2000192F, vector=3FC*, MAC=08:00:2B:18:1F:F9
type=DELQA-T, polling=disabled
XQB disabled

tx-0 timing on IOS commands

On the all the IOS Group instructions are done between 0.8 and 1.2. However the timing on Pag 9 of the Sep 66 TX0 Spec says some are done at different times - SPF (1.6) CLL and CLR (0.6).

Code could do CLL AMB which would clear left and transfer it to MBR, but because of the timing it would do the AMB at 0.7 before the CLL which is done later.

deprecation warning when compiling x11.c

this patch fixes a deprecation warning on Fedora Linux 18. I left the original code intact for reference.

--- display/x11.c.original  2013-06-14 14:20:34.718411083 -0400
+++ display/x11.c   2013-06-14 15:38:35.974871233 -0400
@@ -170,7 +170,12 @@
     Boolean *b;
 {
     int shift = (ShiftMask & e->xkey.state) != 0;
+#if 0
     KeySym key = XKeycodeToKeysym( dpy, e->xkey.keycode, shift );
+# else
+    int keysyms_per_keycode;
+    KeySym key = *XGetKeyboardMapping(dpy, e->xkey.keycode, 1, &keysyms_per_keycode);
+#endif      

     /*printf("key %d down\n", key); fflush(stdout);*/
     if ((key & 0xff00) == 0)
@@ -188,8 +193,13 @@
     Boolean *b;
 {
     int shift = (ShiftMask & e->xkey.state) != 0;
+#if 0
     KeySym key = XKeycodeToKeysym( dpy, e->xkey.keycode, shift );
-
+# else
+    int keysyms_per_keycode;
+    KeySym key = *XGetKeyboardMapping(dpy, e->xkey.keycode, 1, &keysyms_per_keycode);
+#endif      
+    
     /*printf("key %d up\n", key); fflush(stdout);*/
     if ((key & 0xff00) == 0)
    display_keyup(key);

PDP11 RSTS/E does not recognize RK07 drive type

Reported (to me) by Mark Pizzolato. This is an RSTS/E problem; RT11 and RSX11M+ run correctly.

The issue appears to be a change in 2007 that skips checking for drive type mismatches on drive reset and NOP commands. RSTS/E is counting on drive reset to set drive type mismatch if one occurs. I need to backtrack and find out why this change was made. (Answer: it was a hack to get RSX11M+ to work.)

I've gone into the schematics to understand what's happening.

  1. The 2007 change is indeed wrong. Drive mismatch is set for all commands. However, it is not a fatal error. It does not block execution of commands. It does not set drive attention. The simulator was aborting on drive type mismatch.
  2. In fact, very few errors set drive attention: only unsafe, invalid seek address, and invalid function. The simulator was setting drive attention on any error.

With these changes in, and the 2007 hack removed:

  • RT and RSX work.
  • RSTS/E can initialize an RK07 during startup with the DSKINT command.

However, RSTS/E mount fails with a "hung drive error." The next step is to trace the disk activity and the driver during the MOUNT request.

A few nits building simh out-of-the-box under OS/X and clang ...

Grabbed the latest simh .zip off of github this afternoon. Specified clang as the compiler. Builds with a few warnings.... seems to run just fine.

OS/X 10.8.2

clang --version
Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.2.0
Thread model: posix

Good job Guys!!!

Harry Reed

===== Cut Here ===== 8< ===== 8< ===== 8< =====

MALON:simh-master doon$ make GCC=clang pdp10
lib paths are: /usr/lib /opt/local/lib /usr/X11/lib
using libm: /usr/lib/libm.dylib
using libpthread: /usr/lib/libpthread.dylib /usr/include/pthread.h
using libdl: /usr/lib/libdl.dylib /usr/include/dlfcn.h


*** pdp10 Simulator being built with:
*** - compiler optimizations and no debugging support. GCC Version: .


mkdir -p BIN
clang -std=c99 -U__STRICT_ANSI__ -O2 -I . -D_GNU_SOURCE -I/opt/local/include -DUSE_READER_THREAD -DSIM_ASYNCH_IO -DHAVE_DLOPEN=dylib PDP10/pdp10_fe.c PDP11/pdp11_dz.c PDP10/pdp10_cpu.c PDP10/pdp10_ksio.c PDP10/pdp10_lp20.c PDP10/pdp10_mdfp.c PDP10/pdp10_pag.c PDP10/pdp10_rp.c PDP10/pdp10_sys.c PDP10/pdp10_tim.c PDP10/pdp10_tu.c PDP10/pdp10_xtnd.c PDP11/pdp11_pt.c PDP11/pdp11_ry.c PDP11/pdp11_cr.c scp.c sim_console.c sim_fio.c sim_timer.c sim_sock.c sim_tmxr.c sim_ether.c sim_tape.c sim_disk.c sim_serial.c -DVM_PDP10 -DUSE_INT64 -I PDP10 -I PDP11 -o BIN/pdp10 -L/opt/local/lib -L/usr/X11/lib -lm -lpthread -ldl
sim_timer.c:527:5: warning: add explicit braces to avoid dangling else
[-Wdangling-else]
AIO_UPDATE_QUEUE;
^
./sim_defs.h:1020:7: note: expanded from macro 'AIO_UPDATE_QUEUE'
} else (void)0
^
sim_timer.c:641:13: warning: add explicit braces to avoid dangling else
[-Wdangling-else]
sim_debug (DBG_CAL, &sim_timer_dev, "asynch calibration...
^
./scp.h:148:116: note: expanded from macro 'sim_debug'
...& dbits)) _sim_debug (dbits, dptr, VA_ARGS); else (void)0
^
sim_timer.c:645:5: warning: add explicit braces to avoid dangling else
[-Wdangling-else]
else {
^
3 warnings generated.
sim_disk.c:916:13: warning: add explicit braces to avoid dangling else
[-Wdangling-else]
else
^
1 warning generated.
MALON:simh-master doon$

set cpu idle return "Command not allowed" in NetBSD-5.1.2

The command "set cpu idle" returns "Command not allowed" in NetBSD-5.1.2. This previously worked on V3.8-1 when using the posix compliant implementation of sim_os_ms_sleep_init.

% uname -a
NetBSD fx 5.1.2 NetBSD 5.1.2 (GENERIC) #0: Thu Feb 2 12:12:28 UTC 2012 [email protected]:/home/builds/ab/netbsd-5-1-2-RELEASE/amd64/201202021012Z-obj/home/builds/ab/netbsd-5-1-2-RELEASE/src/sys/arch/amd64/compile/GENERIC amd64
% ./pdp11

PDP-11 simulator V3.9-0
sim> set cpu idle
Command not allowed
sim>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.