Commit graph

245 commits

Author SHA1 Message Date
Mark Pizzolato
1897dfeb94 CDC1700: Initial import of new simulator from John Forecast 2016-07-20 21:05:02 -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
63510629d9 makefile: isys8010 and isys8020 can now be compiled with a C++ compiler 2016-05-23 16:43:22 -07:00
Mark Pizzolato
64716dad74 makefile: Fix MinGW build to allow C++ compiles 2016-05-16 16:17:22 -07:00
Mark Pizzolato
03445f5f94 B5500: Promote sim_card to a top level simh library
Rich Cornwell's sim_card module is about to be used by another new simulator
so it is being promoted.
2016-05-15 18:01:38 -07:00
Mark Pizzolato
5531ccb175 ALL: Massive 'const' cleanup
These changes facilitate more robust parameter type checking and helps
to identify unexpected coding errors.

Most simulators can now also be compiled with a C++ compiler without
warnings.

Additionally, these changes have also been configured to facilitate easier
backporting of simulator and device simulation modules to run under the
simh v3.9+ SCP framework.
2016-05-15 15:25:33 -07:00
Mark Pizzolato
faeff88ce5 makefile: Disable link time optimization when building with clang.
Recent clang versions on OS X and Linux no longer buildingn with
-flto -fwhole-program
2016-04-26 20:55:14 -07:00
Mark Pizzolato
c55b6a8a8b makefile: Document supported build requirements and allow unsupported builds
Users wanting to build simulators with locally build dependent packages or
packages provided by an unsupported package management system can
override where this procedure looks for include files and/or libraries.

Overrides can be specified by define exported environment variables or
GNU make command line arguments which specify INCLUDES and/or LIBRARIES.
Each of these, if specified, must be the complete list include directories
or library directories that should be used with each element separated by
colons. (i.e. INCLUDES=/usr/include/:/usr/local/include/:...)

Binaries built with unsupported library components will have a 'unsupported' tag
in the output of the SHOW VERSION command.
2016-04-26 20:24:01 -07:00
Mark Pizzolato
02d9bc304b makefile: Avoid trying to build using static libraries for libsdl and libsdl2.
Fix #297 (at least for OpenSUSE Leap 42.1)
2016-03-29 14:06:15 -07:00
Mark Pizzolato
736e341fd2 makefile: Fix OS X build to correctly supply input events for video capable sims 2016-03-28 18:16:59 -07:00
Mark Pizzolato
fb36c22058 makefile: simplify building Video support by leveraging sdl-config and sdl2-config 2016-03-27 14:00:17 -07:00
Mark Pizzolato
2b155ba29d VAX780, VAX750, VAX730, VAX8600: Add TC11/TU56 (DECtape) device to Unibus VAX simulators
VMS Driver and support files for the TC11 should be available at
http://bitsavers.org/bits/DEC/vax/vms/dkdriver_vms.zip
2016-03-27 12:28:02 -07:00
Phil Budne
8f7523bd45 PDP7: GRAPHICS-2 rename pdp18b_g2.c pdp18b_g2tty.c
This allows for storage scope simulation (too)!
(there is one program among the PDP-7 UNIX sources that uses the display)
2016-03-27 04:33:48 -07:00
Phil Budne
40a3628173 PDP7: Start of Bell Labs GRAPHICS-2 simulation (as "Glass TTY") 2016-03-27 04:33:02 -07:00
Mark Pizzolato
adcd64d20c makefile: Fix build of VAX simulator which was recently broken 2016-03-25 17:44:44 -07:00
Mark Pizzolato
fb9e0ac354 makefile: Fix -fwhole-program warnings on OS X with newest Xcode 2016-03-25 17:26:30 -07:00
Mark Pizzolato
bfe87ed1c5 VAX780, VAX750, VAX730, VAX8600: Add TC11/TU56 (DECtape) device to Unibus VAX simulators 2016-03-25 04:01:44 -07:00
Mark Pizzolato
80321577f9 PDP10: Adjust build to include network support 2016-03-18 09:29:45 -07:00
Mark Pizzolato
fb8f630ea9 MAKEFILE: Fix locale issues while locating include and library paths
As reported in #284
2016-03-09 10:01:15 -08:00
Mark Pizzolato
3a4e879c07 HP3000: Initial release of the HP 3000 Series III simulator (from Dave Bryan) 2016-03-07 20:47:57 -08:00
Mark Pizzolato
53b6809e4a HP2100: Change hp_disclib filename to hp2100_disclib (from Dave Bryan) 2016-03-07 20:42:19 -08:00
Mark Pizzolato
02aa4539cd MAKEFILE: Make sure that the runtime library search path is also used at link time. 2016-02-08 13:27:09 -08:00
Mark Pizzolato
ba9769c258 MAKEFILE: Add proper simulator dependency relationship for BuildROMs
This has the general benefit of making sure that the binary ROM image
files in the build working directory didn't get mangled.
2016-02-08 13:25:20 -08:00
Mark Pizzolato
1cd8925894 B5500: Add build (Makefile, Visual Studio Project, descrip.mms) support 2016-02-06 14:39:03 -08:00
Mark Pizzolato
b804964514 PDP11, PDP1, TX-0: Added SDL based graphics support using sim_video.
Both VT11 and VS60 properly autoconfigure on the PDP11.
PDP11 now runs Lunar Lander on all SDL supported platforms.
Reworked refresh logic to not require internal delays in the display library
2016-01-29 10:16:30 -08:00
Mark Pizzolato
13c4681a2a makefile: Include display support (if available) when building pdp11 individually 2016-01-10 15:47:09 -08:00
Mike Douglas
7a231a2cf9 AltairZ80: Add support for North Star single density controller
The first disk controller made by North Star was a single density
controller (MDSA). This was followed by the double density controller
(MDSAD) that is already supported in SIMH. This update adds support for
the single density controller as device MDSA. Since the controllers are
not software compatible, this update allows running of older software
designed for the MDSA controller.
2015-12-16 15:39:46 -06:00
Mark Pizzolato
9e9b382754 makefile: rework the gcc -std setting logic to accommodate environments which have include files that don't compile with -std=c11. 2015-12-01 21:23:41 -08:00
Mark Pizzolato
d1518e56a6 makefile: Fix gcc version detection so correct -std argument can be determined 2015-11-29 15:24:09 -08:00
Mark Pizzolato
01c410ab32 makefile: Generalize the gcc -std tests to work for both MinGW and unix environments. Fix #250 2015-11-29 04:46:54 -08:00
Mark Pizzolato
a18a4f42b9 makefile: Support clean builds of simulators with slirp support with older versions of gcc 2015-11-27 13:08:53 -08:00
Mark Pizzolato
7ad57d7fa8 slirp: cleanup for submission upstream back to qemu
Minimize the include file set and their contents to only provide the slirp
 referenced qemu includes and interfaces.
2015-10-22 09:55:05 -07:00
Mark Pizzolato
3be5125d00 slirp: Add windows build support for MinGW 2015-10-17 10:50:30 -07:00
Mark Pizzolato
86d1e36f29 all VAX, PDP11: Add initial NAT based ethernet connectivity via SLiRP.
This should work on all byte addressable host systems using GCC/clang to build.

The QEMU slirp code has been pried out of QEMU and stubs have been created to solve where the current slirp is entangled with the QEMU code.  Ths slirp/simh directory contains all the necessary include and glue files to make this useful.  Everything in the slirp directory is unmodified QEMU code.
2015-10-15 12:59:32 -07:00
Tony Nicholson
e229733850 makefile: cygwin build video support using SDL2 (preferred) or SDL
cygwin now includes development packages for the SDL2 and SDL video
libraries (libSDL2-devel and libSDL-devel). Adjust makefile to find the
libSDL2.dll.a or libSDL.dll.a library.
2015-09-25 17:34:11 +10:00
Mark Pizzolato
650f768843 makefile: Add support for building with libpng 2015-09-24 15:25:53 -07:00
Mark Pizzolato
9f59823ae3 PDP11, all VAX: Add TU58 device simulator with support for 32 drives plus the VAX 730 and 750 console devices 2015-09-22 15:06:12 -07:00
Bill Beech
32945f5b70 ISYS8020: Makefile correction to build correctly 2015-05-08 15:57:35 -07:00
Bill Beech
5de213afdf ISYS8020: Modified makefile for ISYS8020 2015-05-08 15:46:31 -07:00
Bill Beech
c73a8501ae ISYS8010: Rename top intel directory to Intel-Systems (from isys8010) 2015-05-05 14:06:12 -07:00
Bill Beech
8d9a379d05 25 Apr 15 mods for ISYS8010. 2015-05-05 14:06:10 -07:00
Mark Pizzolato
cd799c9d3f makefile: dynamically determine if shm_open is available on the local system, Fix X11R7 library reference when available 2015-04-28 16:29:23 -07:00
Mark Pizzolato
041c866d67 PDP10: Added DEUNA/DELUA support back since there exists software which actually supported it.
The code which used it provides some IP packet transport: ftp://ftp.stacken.kth.se/pub/pdp10/tops10/util/
2015-04-26 15:04:01 -07:00
Mark Pizzolato
1163099735 makefile: Fix MinGW build to properly reference the PCRE static link library and upgraded the windows-build version check 2015-04-12 10:38:28 -07:00
Mark Pizzolato
3dce4e1210 FRONTPANEL: Provide a sample program to demonstrate the use of the sim_frontpanel APIs. 2015-02-11 17:09:55 -08:00
Mark Pizzolato
0fd4a9f178 VIDEO: Fix makefile for building on OS X with SDL (vs SDL2). 2015-02-05 15:48:16 -08:00
Mark Pizzolato
8c4397ee25 VIDEO: Initial working OSX support 2015-02-04 17:03:52 -08:00
Mark Pizzolato
e0108b52a2 SCP: Compiler suggested cleanup and spelling fix 2015-01-14 15:09:54 -08:00
Mark Pizzolato
a71e5e0599 makefile: Fix broken build under MinGW 2015-01-13 12:55:43 -08:00
Mark Pizzolato
ebbe009d57 makefile: Add ability to build the vax simulator with SDL (if available) when vax is the single build target 2015-01-13 09:09:52 -08:00