Commit graph

1969 commits

Author SHA1 Message Date
Mark Pizzolato
a59cd3bd3b CDC1700: Update to add help and descriptions from John Forecast
- add internal help entries
- add descriptions to the register, modifier and debug tables.
- changed device CD name to CDD to avoid name conflict with the CD command
2016-07-24 13:33:03 -07:00
Mark Pizzolato
75ab9f513b PDP10: Fix printer idle flush logic to properly reference the LP20 unit structure 2016-07-21 05:45:30 -07:00
Mark Pizzolato
63cf98f84b CDC1700: Compiler suggested cleanup 2016-07-20 21:27:02 -07:00
Mark Pizzolato
1897dfeb94 CDC1700: Initial import of new simulator from John Forecast 2016-07-20 21:05:02 -07:00
Mark Pizzolato
93a8754bfe MicroVAX I, MicroVAX II, VAX: Improve debug output for QVSS keyboard activities (LK) 2016-07-17 11:44:23 -07:00
Mark Pizzolato
b8b95c7b20 TMXR: Avoid closing file descriptor 0 when disabling serial port console output
Properly initialize TMXR structure when attaching to a serial port so a
subsequent close will not attempt to close the uninitialized ring_sock.
2016-07-15 03:58:52 -07:00
Mark Pizzolato
a9e17075ce TMXR: Reworked output to physical serial ports to avoid host OS buffering 2016-07-15 03:55:21 -07:00
Mark Pizzolato
c3496e4aa6 TMXR: Reworked output to physical Serial ports for VMS and Windows hosts
The goal being to have output to physical serial ports complete without host
OS level buffering so that what is transmitted via the serial port has correct
timing with respect to I/O completion status within a simulator.

Linux, OS X, and various other *nix host platforms still need work here.
2016-07-14 13:53:41 -07:00
Mark Pizzolato
83bf230a47 All VAX: Fix REI check when compatibilty mode. From Bob Supnik
The rule check on the PSL was incomplete. DV, FU, IV must all be zero,
and they weren't checked at all.

VAX Diagnostic EVKAE now runs to completion.
2016-07-14 11:45:32 -07:00
Mark Pizzolato
553bc357b9 TMXR: Fix logic to use single character output buffer for serial ports 2016-07-14 08:01:03 -07:00
Mark Pizzolato
236dbb253a PDP1: ASCII/FIODEC are not SET options. ASCII mode is only attach -A 2016-07-14 06:44:28 -07:00
Mark Pizzolato
2425ba55b2 PDP1: Fix PTP and PTR ASCII Mode from Bob Supnik
ASCII mode for the paper tape reader and punch didn't <quite> work.

In ASCII mode, the <simulator> must create the leader and trailer. The
leader was already there. There shouldn't be nulls in an ASCII file. The
whole point is to be able to prepare and look at input and output files
with a normal text editor.

So this version should work right. It "autogens" trailer more or less
forever. It doesn't really need to return a STOP code on EOF, but users
would probably forget to put form feed at the end, so it doesn't hurt.
2016-07-13 15:06:58 -07:00
Mark Pizzolato
654d106b9d PDP1: Revised doc for Expensive Typewriter support, etc. from Bob Supnik 2016-07-13 14:27:29 -07:00
Mark Pizzolato
db3000086e PDP1: Add Expensive Typewriter support and paper tape additions from Bob Supnik
1. Implemented Expensive Typewriter mode for TTO.
2. Added ASCII conversion on paper tape punch as well as reader.
3. Changed conversion tables to recognize form feed (014) as FIODEC STOP.
2016-07-13 14:26:25 -07:00
Mark Pizzolato
4065f47f8c SCP: Add sim_strncasecmp for platforms which may not have strncasecmp
Consolidated the existing two previously implementations which existed in
sim_serial and sim_ether.
2016-07-12 09:23:46 -07:00
Mark Pizzolato
052fafc62e SCP: Add UNIT wait and buf to SAVE/RESTORE data as documented. 2016-07-11 19:54:15 -07:00
Mark Pizzolato
e93b55b488 HP3000: Preset the unit wait field. (from Dave Bryan)
PROBLEM:  Attempting to LOAD after a RESTORE of an MPE session aborts
   the simulator with an "integer division by zero" exception.

   OBSERVATION:  Stopping the simulator during an idle MPE session,
   saving the state to a file, exiting, restarting, restoring, and
   attempting to perform a cold load aborts with a "divide by 0" error.

   CAUSE:  The "clk_update_counter" routine in hp3000_clk.c is called as
   part of the instruction postlude to update the clock's counter
   register.  A calculation divides the elapsed time since the last tick
   by the clock unit's "wait" value.  The developer's manual stated that
   this field is saved and restored automatically, but this is not true.
   When the simulator is restarted, the "wait" field is initially zero.
   If "clk_update_counter" is called before the clock's event service
   routine resets the value, the calculation will divide by zero, which
   causes the abort.

   RESOLUTION:  Modify "clk_reg" (hp3000_clk.c) to preset the unit wait
   field with the MPE clock resolution value.
2016-07-10 06:49:22 -07:00
Mark Pizzolato
07f99bb8c3 HP3000, HP2100: Updated simulators from Dave Bryan
- This release of the HP 3000 simulator adds the following device simulation:

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

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

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

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

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

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

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

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

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

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

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

     VERSION:  Release 1

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

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

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

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

     STATUS:  Fixed in Release 2.

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

     VERSION:  Release 1

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

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

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

     STATUS:  Fixed in Release 2.

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

     VERSION:  Release 1

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

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

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

     STATUS:  Fixed in Release 2.

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

     VERSION:  Release 1

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

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

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

     STATUS:  Fixed in Release 2.
2016-07-05 22:09:21 -07:00
Mark Pizzolato
73a9475c9d DOC: Correct descriptions of when large file and Ethernet support is available 2016-06-29 20:51:01 -07:00
Mark Pizzolato
626c3309fc ETHER: Support Npcap for Windows Ethernet packet transport
Prefer Npcap over WinPcap and support Npcap in either WinPcap compatible
mode or native mode.
2016-06-23 03:05:32 -07:00
Mark Pizzolato
3f27267102 All VAX: Fix value check on SIIR.
Only the low 4 bits of the value are interesting and the value 0 in not
valid.  Never generate a Reserved Operand Fault. EVKAE detected this
problem.
2016-06-21 16:32:50 -07:00
Mark Pizzolato
953683c115 VAX730: Add missing value in DIB structure for proper auto-configure behavior 2016-06-21 05:24:51 -07:00
Mark Pizzolato
f946508c8b VAX750: Fix UBA register alignment and length check
The VAX 11/750 diagnostic supervisor makes word length references to
UBA register space, so this must have been legal.
2016-06-20 16:51:52 -07:00
Mark Pizzolato
c5d5a9dfbf VAX780: Fix Interval Timer logic
- Previous changes made to support 32V's 60HZ clock tick introduced changes
  which didn't properly handle increments and interrupt generation while single
  stepping the timer.

- The icr_rd routine returned an incorrect value when interpolation was
  necessary due to a missing cast when converting from double to uint32.

- Properly start the timer from the current state of the interval count register
  when the timer was previously stopped.
2016-06-20 15:56:19 -07:00
Mark Pizzolato
b935a2dafc SCP: Make sure SIM_BIN_NAME environment variable is always defined.
Previously it would only be defined in certain instances and after
processing some combinations of startup files.
2016-06-20 11:54:28 -07:00
Mark Pizzolato
e158408268 SCP: Add simulator binary name in a SIM_BIN_NAME environment variable 2016-06-19 22:10:17 -07:00
Mark Pizzolato
f2656acb38 TMXR: Fix logic which interprets DTR transitions 2016-06-19 08:08:19 -07:00
Mark Pizzolato
d741bdc375 VIDEO: Allow SCREENSHOT command to optionally specify bitmap file extension
When PNG support is available, both .png and .bmp screenshots can be
generated based on the file extension specified by the user on the SCREENSHOT
command.  If no extension is specified, then a PNG format screenshot will be
produced.
2016-06-15 00:27:07 -07:00
Mark Pizzolato
a24aba69ae VIDEO: Added priority boost to thread performing SDL processing and updates
Reworked all priority adjustment code to leverage a new
sim_os_set_thread_priority API which is coded to use pthreads or OS
priority adjustment APIs as necessary.
2016-06-11 09:52:33 -07:00
Mark Pizzolato
3743d3d68a VIDEO: Avoid losing mouse button state when coalescing motion events
Identified by @shattered in #321

Added better debug output for keyboard events.
2016-06-11 08:39:25 -07:00
Mark Pizzolato
b89369e896 QVSS: Add support for keyboard bell 2016-06-11 08:30:36 -07:00
Mark Pizzolato
1c551b7b5a TMXR: Use single character output buffer when writing to physical serial ports 2016-06-11 08:28:28 -07:00
Mark Pizzolato
82b12084b0 Remove accidentally added file 2016-06-08 10:13:47 -07:00
Mark Pizzolato
f3467d678c SCP: Extend RUN and GO commands with optional UNTIL criteria.
The new RUN/GO command syntax supports a stop criteria.
There are two forms of stop criteria:

1) A normal breakpoint (which exists only until it is encountered)
2) A user specified output string is emitted by the simulated system.

Command syntax is:

    RUN|GO {START-PC-VALUE} {UNTIL breakpoint|"output-string"}
2016-06-05 02:39:41 -07:00
Mark Pizzolato
c5ee1ad971 SCP: Enhance EXPECT support to allow multiple rules with the same match string
Multiple rules with the same match string are processed in the order the EXPECT
commands are entered.  NOEXPECT will remove all pending EXPECT rules which
have the match string provided on the NOEXPECT line.
2016-06-05 01:40:38 -07:00
Tony Nicholson
d9f3743783 ETHER: Fix incompatible ptr type and relocate _eth_get_system_id for Cygwin
Compilation under Cygwin with gcc 5.3.0 - missing const gave rise to
incompatible pointer type warning, and _eth_get_system_id for _WIN32
was included under a conditional for either _WIN32 or __CYGWIN__
and later redefined for !_WIN32
2016-06-03 00:35:54 -07:00
Mark Pizzolato
8d7e8f4d30 VAX: Fixed WordLshift (ASHP left overflow calc)
As observed by EVKAB diagnostic and reported in #319
2016-05-30 14:43:35 -07:00
Mark Pizzolato
8b08e6c2d9 SCP: Allow spawn commands to not require space after ! 2016-05-30 04:14:45 -07:00
Mark Pizzolato
e67bf602a0 SCP: Added shutdown flag for detach_all 2016-05-28 13:32:15 -07:00
Mark Pizzolato
b0e67d5900 SCP: Fixed potential memory leak in get_asearch 2016-05-28 13:31:50 -07:00
Mark Pizzolato
a71a7c6882 VAX: Add octaword result information to instruction history
Also reworked drom result bitfield macros to use standard shift and masks
2016-05-28 06:03:21 -07:00
Mark Pizzolato
4e7fada26c VAX: Fix decode of octaword instructions
EXAMINE -M now properly displays instruction arguments for octaword
instructions.
2016-05-27 15:09:40 -07:00
Mark Pizzolato
8e5d0b0a40 VAX: Allow history log file to have mixed case filename 2016-05-27 07:55:17 -07:00
Mark Pizzolato
64450a778c windows-build: Update required version to include libSDL2 _allshr fix
SDL's static build support provides some primitive x64 functions used
with x64 values when compiling under x86.
2016-05-26 17:36:11 -07:00
Richard Cornwell
c717ee928f B5500: Added buffer size option to DTC.
Added buffer size option allowing buffers to be set at a multiple of
28 characters. This is to allow R/C to be run without modifications.
2016-05-24 20:36:22 -04:00
Mark Pizzolato
8bc31af29c PDP11, VAX: Allow Ethernet SET MAC arguments to have upper/lowe case values 2016-05-24 11:58:58 -07:00
Mark Pizzolato
451b53daeb TMXR: Allow Line based logging to be both disabled and enabled before attach
Previously attempts to disable logging for an unattached mux (or line) could
crash the simulator.
2016-05-24 08:53:05 -07:00
Mark Pizzolato
ae6f3b97e4 PDP11, VAX: Use generated unique default MAC addresses for Ethernet devices 2016-05-24 08:47:01 -07:00
Mark Pizzolato
3dcd5124e9 ETHER: issue explanatory messages when rejecting invalid MAC addresses. 2016-05-24 08:45:28 -07:00
Mark Pizzolato
2d907980f1 ETHER: Add support for generated interface MAC addresses
sim> SET XQ MAC=aa:bb:cc:dd:ee:ff{/bits}{>filespec}

where:

- all of the aa:bb:cc:dd:ee:ff values must be hex digits
- bits is the number of bits which are to be taken from the supplied
   MAC aa:bb:cc:dd:ee:ff with legal values from 16 to 48 and a default
   of 48 bits.
- filespec specifies a file which contains the MAC address to be used
   and if it doesn't exist an appropriate generated address will be stored
   in this file and a subsequent SET MAC invocation specifying the same
   file will use the value stored in the file rather than generating a new
   MAC.

As discussed in #317
2016-05-23 16:56:06 -07:00