Commit graph

298 commits

Author SHA1 Message Date
Mark Pizzolato
417102c5c4 Added full DHU11 (16 line) functionality for UNIBUS environments (PDP11 and VAX), while also supporting DHV11 (8 line) for Qbus systems 2012-12-14 12:37:00 -08:00
Mark Pizzolato
4b163b9d1d Cleaned up compiler warnings 2012-12-14 04:19:10 -08:00
Mark Pizzolato
c71e0c39dc Compiler warning cleanup 2012-12-13 15:21:07 -08:00
Mark Pizzolato
a3b0dc38fd Change the semantics of sim_is_active to return a t_bool (which was 98% of how it was used), and added new sim_activate_time to return the time a unit will be activated (the value previously returned). This affected a handful of used of sim_is_active in device implementations which were adjusted to use the sim_activate_time API. 2012-12-12 11:01:00 -08:00
Mark Pizzolato
e541a3408f Fix compiler warning. 2012-12-11 17:24:40 -08:00
Mark Pizzolato
0290b4bee4 Fixed interrupt logic causing OS device timeouts when I/O was happening to multiple drives simultaneously (from Bob Supnik) 2012-12-11 10:16:48 -08:00
Mark Pizzolato
e0bb8fed91 Added support for changing rq controller type to one of RQDX3, UDA50, RUX50 or KLESI. (from Mike Burke) 2012-12-10 05:58:11 -08:00
Mark Pizzolato
7f6a1af5bf Added an optional validation argument to sim_parse_addr for callers which need to confirm incoming connections come from expected sources 2012-12-09 12:12:09 -08:00
Mark Pizzolato
72c65ad7a4 Changed UNLOAD to be an illegal operation if issued on an RM device and made UNLOAD on RP devices execute immediately (as suggested by Bob Supnik) 2012-12-08 15:22:27 -08:00
Mark Pizzolato
cb659d6c83 Fix to properly report device attention when a manual detach operation is performed (from Bob Supnik) 2012-12-08 14:30:00 -08:00
Mark Pizzolato
ac8bd2521b Added RC25, RCF25 and RA80 drive definitions (from Hans-Ulrich Hölscher) 2012-12-08 13:00:00 -08:00
Mark Pizzolato
822fedf8ce Fixed polling to start on receiving a master clear and stop on Detach (Rob Jarratt) 2012-12-08 11:13:03 -08:00
Mark Pizzolato
2f3782a896 Update fixing dangling connections after detach and trying to adjust some polling behaviors (from Rob Jarratt) 2012-12-08 07:21:28 -08:00
Mark Pizzolato
badde9b852 Fixed bug in pdp11_xu which inhibited it from being disabled after it was ever enabled (reported by Rob Jarratt) 2012-12-08 07:13:05 -08:00
Mark Pizzolato
13fd6e5cb7 Fixed a few minor issues:
1) a RELEASE is documented (in our limited case) to be equivalent to a CLEAR not a NOP.
   2) avoid setting Attention as a consequence of processing an UNLOAD command.
   3) extended debugging information needed while looking for an issue which turned out to be a bug in the vax 780 Massbus interrupt triggering logic.
2012-12-06 08:39:35 -08:00
Mark Pizzolato
bcf0e8b19c Generalized sim_debug_u16 into sim_debug_bits and added support to display bit fields of variable size as well as bit states. 2012-12-04 09:32:40 -08:00
Mark Pizzolato
42b7bed6f5 pdp11_dmc.c - Removed DMP “support” through conditional compilation, including removal of SET TYPE command.
- Removed SET POLL command.
	- Changed SET TRANSMIT command to SET PEER
	- Fixed problem with detached device causing socket errors
2012-12-03 16:56:15 -08:00
Mark Pizzolato
b6dd86983f Fixed the loopback setup when the receive port was specified with a specific interface (i.e. localhost:port) 2012-12-01 08:07:49 -08:00
Mark Pizzolato
c90bdf935a pdp11_rp.c - Fixed operation with asynch disabled.
- Added new style detailed debugging using sim_debug.
2012-11-21 08:27:32 -08:00
Mark Pizzolato
7c7df669ad Asynchronous Support
scp.c, scp.h
	- added sim_uname (Unit Name) API to simplify places which might want to display it (mostly debug messages).
	- added support for clock co-scheduling
	- added debugging to trace event queue activities

    sim_defs.h
	- added support for clock co-scheduling
	- added support for sim_uname (Thread local storage macro)
	- added support for debugging to trace event queue activities
	- simplified debug code by using sim_uname
	- fixed support macro for sim_is_active when asynch timers are in use

   sim_rev.h
	- fixed nested comments

    sim_tmxr.c, sim_tmxr.h
	- added support for clock co-scheduling
	- simplified debug code by using sim_uname
	- added support for devices which poll for output on different units

    sim_timer.c, sim_timer.h
	- added support for clock co-scheduling
	- fixed asynchronous clock calibration to smooth out calibration adjustments
	- simplified debug code by using sim_uname
	- added ability (when running with asynchronous support) to explicitly disable or enable asynchronous timer support.
	- changed sim_timer_inst_per_sec to return a double value since the result is always used in a double expression and integer overflow could occur under strange timing conditions

    vax/vax_stddev.c
	- converted from simulator specific clock co-scheduling to generic clock co-scheduling.

    vax/vax_cpu.c
	- added EVENT and ACTIVATE debug flag (SET CPU DEBUG=EVENT;ACTIVATE) support

    pdp11/pdp11_dz.c
	- converted from simulator specific clock co-scheduling to generic clock co-scheduling.

    pdp11/pdp11_vh.c
	- converted from simulator specific clock co-scheduling to generic clock co-scheduling.

    pdp11/pdp11_xq.c
	- converted from simulator specific clock co-scheduling to generic clock co-scheduling.
2012-11-12 15:33:35 -08:00
Mark Pizzolato
05707907a4 Fixed autogen table for DMC11 and DMP11 devices. 2012-11-07 15:34:45 -08:00
Mark Pizzolato
d51df0eba5 Merge of working DMC-11 device from Rob Jarratt.
pdp11_dmc.c
	- Fixed DMA bug which wrote data into the wrong simulated memory address.
	- Fixed incoming IP address checking.

pdp11_io_lib.c
	- Added the DMC device to the autoconfigure device table

vax780_defs.h
	- Added comment for DMC11
2012-11-06 17:00:54 -08:00
Mark Pizzolato
f1e3216d99 Added MicroVAX I network boot support
pdp11_xq.c, pdp11_xq.h
	- Added emulation and visibility to the LEDs which were on the physical DEQNA/DELQA network boards.  "show xq: will now display the LED state in addition to the other useful things.
	- Added debugging of loopback packet data
	- Avoided padding on short loopback packets
	- Added support for extended length loopback packets (up to 1600 bytes) which is described in the DEQNA manual and used by the MicroVAX I boot ROM.  Recieve such packets with the LONG error indicator.
	- Returned 'reserved' status bits as 1's in received packet status word 1.
	- Added debug display of transmit and receive Buffer Descriptor List contents.

sim_ether.c, sim_ether.h
	- Added support for extended/oversized packets.
2012-11-05 15:12:36 -08:00
Mark Pizzolato
76612265ca Addition of MicroVAX I (VAX610) processor simulator from Matt Burke 2012-10-25 11:58:10 -07:00
Mark Pizzolato
0a46da5aa0 Changed pdp11_dz to leverage the tmxr library's pass thru modem control capabilities.
Fixed reporting of DCD for dz lines beyond the first 4.
2012-10-17 14:17:14 -07:00
Mark Pizzolato
02cb620c9b Change to support serial ports on multiplexer devices without any changes to existing multiplexer device emulation code.
Added support for per line tcp listen ports.
Added support for per line outgoing tcp/telnet connections.

Removed DEV_NET from pdp11_dz and pdp11_vh emulators to allow proper restore of
2012-10-17 08:40:01 -07:00
Mark Pizzolato
24696892fd Merge branch 'DMC11' into SerialMux
Conflicts:
	scp.c
	sim_ether.c
	sim_ether.h
	sim_tmxr.c
2012-10-16 15:50:38 -07:00
Mark Pizzolato
0453a87f18 Revised pdp11_dmc device to leverage the update sim_sock interfaces 2012-09-28 15:41:03 -07:00
Mark Pizzolato
6692832785 Initial import of pdp11_dmc.c and .h from Rob Jarratt 2012-09-28 15:27:21 -07:00
Mark Pizzolato
fd1cd463f9 Added UNIT_IDLE to timer threads for RQ B, C and D controllers. - Sergey Oboguev 2012-07-10 13:26:08 -07:00
Mark Pizzolato
7c38b83d7c Asynchronous Multiplexer and Console Support
scp.c, scp.h, sim_defs.h
     - Added commands:
          SHOW MULTIPLEXER (MUX)
          SHOW TIMERS
     - Added facilities/APIs:
          sim_activate_after - time specific event scheduling (vs instruction scheduling) API visible, optional separate thread implementation in a later revision
     - Changed Commands:
          SET CONSOLE DEBUG no longer affects global debugging, but merely debugging for the console subsystem.  Use SET DEBUG and SET NODEBUG to affect global debugging.
     - Added Asynchronous polling support

sim_tmxr.h, sim_tmxr.c
     - Added Asynchronous capabilities to the multiplexer subsystem to avoid polling for input and to deliver input data instantly when it arrives instead of delaying for up to one or more full simulated clock ticks.
     - Added debug trace support
     - Added statistic tracking of total bytes transmitted on each line
     - Added more aggressive attempts to flush transmit buffers when they fill before dropping tranmitted characters
     - Fixed status return of tmxr_putc_ln to return SCPE_LOST if the transmitting line isn't connected or buffered.

sim_console.h, sim_console.c
     - Fixed issue where connections to console telnet sessions would succeed for the first connection, but hang indefinitely for additional connects without rejecting due to all lines being busy.  This is handled by using an internal device and unit to hang the required polling on.  Connection polls happen once per second.
     - Added console debugging/trace support.
     - Added Asynchronous capabilities to the console subsystem to avoid polling for input and to deliver input data instantly when it arrives instead of delaying for up to one or more full simulated clock ticks.
     - Added tmxr_set_console_input_unit() API to support asynchronous simulator console I/O

sim_timer.h, sim_timer.c
     - Added SHOW TIMERS support
     - Added mechanism to capture the timer the simulator uses for its clock tick and make this timer globally available for other uses

PDP11/pdp11_dz.c
     - Added debug trace support

PDP11/pdp11_vh.c
     - Added debug trace support
     - Changed timing mechanisms to not assume that the count unit service routine calls measures the passage of time, and created a separate unit to measure time.

VAX/vax_stddev.c
     - Added call to tmxr_set_console_input_unit to leverage Asynchronous console I/O
2012-05-12 13:42:44 -07:00
Mark Pizzolato
e35e6bc458 Official simh-v3.9-0 Merge 2012-05-02 07:06:11 -07:00
Mark Pizzolato
0f8e6cfe95 Cleanup for warning messages produced by the clang C compiler. Mostly adding parentheses in conditional assignments and clarification parentheses in complex boolean expressions. 2012-04-29 11:59:44 -07:00
Mark Pizzolato
78009646f0 Cleaned up compiler noticed issues 2012-04-27 15:06:39 -07:00
Mark Pizzolato
57008bb8f5 Cleaned up nested comments 2012-04-27 12:36:03 -07:00
Mark Pizzolato
178f4a743d Merge branch 'master' into SerialMux 2012-04-23 13:03:26 -07:00
Mark Pizzolato
db9bf32112 Merge of Bob's simh-v3.9-0-rc3 2012-04-23 11:50:43 -07:00
Mark Pizzolato
bc36e9dde5 Adds serial port support to the multiplexer library.
It also modifies the HP 2100 and PDP11 multiplexers to add serial support as demonstrations of the capability that, one day, might be extended to all simulators.  I have tested the HP support, but I relied on Holger Veit to test the DEC stuff, so I can't guarantee that it works.  I also relied on Holger to test under Linux, so the same caveat applies.

    The changes needed in the device simulators are relatively small.  For example, if you look at the patches for "hp2100_baci.c", you'll note that most of them are documentation changes.  The only things of note are:

 - an expansion of the TMXR initializer

 - additional code in the "attach" routine to try attaching a serial port
   if attaching a socket fails

 - additional code in the "detach" routine for the same reasons

The HP MPX device (hp2100_mpx.c) needs a tiny bit of additional support from the ATTACH and DETACH commands.  Specifically, SCP was modified to set a flag ("sim_unit_ref") to indicate whether ATTACH MPX or ATTACH MPX0 was done, i.e., to differentiate between a device and a unit attach (recall that SCP treats these as both referring to unit 0).  This is needed because the socket attaches (logically) to the device, whereas a serial port attaches to a line.  Without this flag, the attach routine cannot differentiate between ATTACH MPX and ATTACH MPX0, as the distinction is lost by the time the VM's attach routine is called.  This support isn't needed for the HP MUX device because the socket attaches to a different device than the lines do.

    MPX also requires a bit more work due to the capability to mix serial and Telnet lines on the same multiplexer (BACI is a single-line terminal device).

    The attached PDF contains revisions to the "Writing a Simulator for the SIMH System" publication that documents the additions and changes to the multiplexer library for serial port support.  User documentation for serial port support currently exists only in the initial comments in "sim_tmxr.c"; I will add the appropriate text to the "SIMH User's Guide" if we decide to add this to the release version.
2012-04-19 19:18:15 -07:00
Mark Pizzolato
5f505ccadf Fixing many compiler identified nits. 2012-04-18 09:48:04 -07:00
Mark Pizzolato
127c8042c1 pdp11_xq: Forced the use of clk_cosched when idling is enabled
pdp11_xu: Separated clock based activities from packet reception by creating a separate XU unit for this purpose
2012-04-17 13:40:09 -07:00
Mark Pizzolato
1cb4eb7960 Fixed Asynch I/O issues which may leave pending asynch I/O in limbo when device resets happen (found by Sergey Oboguev) 2012-04-10 05:43:59 -07:00
Mark Pizzolato
ab3af3062d - Changed asynch queue insertion and removal to use a lock free algorithm based only on InterlockedCompareExchangePointer. We can now use this lock free approach on IA64 host systems as well.
- Removed flawed logic which assumed that sim_interval was meaningful when referenced by an asynchronous thread.
- Adjust the event_time of events removed from the asynch queue to account for the average time spent on the queue before the event was noticed by the instruction execution thread.
- Added a sim_activate_notbefore function which specifies an rtime which is the earliest time the event should fire.
- Changed the 'wakeup from idle' logic to force an immediate asynch queue check if the wakeup was not due to a timeout (i.e. it was due to an asynch queue insertion).
- Fixed the descrip.mms to build asynchronous support on AXP and IA64 VMS with kernel threads enabled
2012-04-04 11:05:24 -07:00
Mark Pizzolato
7ac3557524 Fixed bug under Asynch I/O where I/O completion did not delay the appropriate time before passing back device status to a simulator. Found by Sergey Oboguev. 2012-04-02 14:05:12 -07:00
Mark Pizzolato
6e813b8364 Merge with v3.9-0-rc2 first pass 2012-03-24 19:46:37 -07:00
Mark Pizzolato
e0fbfa6abf Fix memory leaks in attach error paths. 2012-03-22 16:14:30 -07:00
Mark Pizzolato
0270d0ea0d Cleanup based on reports from Michael Bloom 2012-03-22 12:20:00 -07:00
Mark Pizzolato
663b25818b Fix potential memory leak in error path reported by Michael Bloom 2012-03-20 18:57:02 -07:00
Mark Pizzolato
cf280ad8f7 Completing merge of v3.9-0-rc1 compile cleanups 2012-03-20 18:55:45 -07:00
Mark Pizzolato
fabdf73bed Compiler cleanup after v3.9-0 merge 2012-03-19 16:07:36 -07:00
Mark Pizzolato
fffad7c20e Merge changes from v3.9-0 rc1 2012-03-19 16:05:24 -07:00