Commit graph

65 commits

Author SHA1 Message Date
Matt Burke
4b41b3372f All VAX, PDP11, PDP10: Minor fixes to DZ device 2017-04-26 15:34:01 -07:00
Sergey Svishchev
2bf538f59c PDP11, All VAX: fix CID: 1415573, 1415452 "Operands don't affect result"
Character length of 5 is stored as 0.
2017-03-09 18:33:40 -08:00
Mark Pizzolato
7d432406b6 PDP11, PDP10, all VAX: General extern cleanup.
Remove explicit redundant extern declarations in source files that are
defined in processor include files.
2017-02-04 19:37:20 -08:00
Mark Pizzolato
01e114c37f PDP11, All VAX: Fix SET ADDRESS alignment value to 010 from 020 2017-01-03 14:46:42 -08:00
Mark Pizzolato
e52ac6d57f SCP: Add help for NOEXPECT and spelling cleanups 2016-12-29 13:52:06 -08: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
619e33466b PDP11, VAX: Move DZ input character silo into device to properly rate limit received data
Previously, the input silo was modeled by using the pending input data in
the TMXR line buffer.  This was fine when bps rate limiting wasn't happening.
In order to properly pace arriving data from multiple lines the silo is now
implemented in a way which more precisely reflects the original hardware.
2015-12-19 11:42:26 -08:00
Mark Pizzolato
109c197faa PDP11, VAX: Remove visibility of internal DZ unit structure. 2015-12-08 03:43:37 -08:00
Mark Pizzolato
d370cb1400 PDP11, VAX: Add reasonable output character delay before DZ interrupt generation. 2015-12-07 18:49:45 -08:00
Mark Pizzolato
88dde792b7 PDP11, VAX: Add device debug help information descriptions 2015-12-06 18:01:20 -08:00
Mark Pizzolato
fc001cad1f VAX, PDP11: Fix DZ device to also regulate input speeds when data is arriving on multiple lines. 2015-11-29 08:28:15 -08:00
Mark Pizzolato
0938d31e59 PDP11, VAX: MUX input rate limiting works correctly with input arriving on multiple lines concurrently. 2015-11-28 12:49:54 -08:00
Mark Pizzolato
62e36241a4 PDP11, VAX: Support multiplexer input speeds greater than 9600bps for console, DZ, VH, DL and DC devices
Each of the speeds greater than 9600bps deliver a character in less than
1ms.  Computing inter-character delays in microseconds therefore can't
be precise enough to be well behaved.  Measuring the inter-character
delays in instructions (scalled by the calibrated clock) gets us the needed
precision.
2015-11-25 04:25:21 -08:00
Mark Pizzolato
972b3fccbb PDP11, VAX: Fix DZ and VH devices to have input rate limiting align with the programmed port speed. 2015-11-23 07:21:32 -08:00
Mark Pizzolato
833ba71c3b PDP11, VAX: Enhance VH, DZ, DL and DCI devices to provide input rate limiting. Fix #246
Data arriving on simulated serial ports can arrive faster than the OS running
on the simulated system can deliber it to user mode programs.  This happens
when chunks of data are delivered to the mux from a network connection.
This can be due to a file transfer program (kermit) running on the other end
of a network connection and the packet size being delivered exceeds the
simulated OS's type ahead buffer size OR from users who paste arbitrary
blocks of data into a telnet or console session.
2015-11-19 08:56:06 -08:00
Mark Pizzolato
ef9d1adce1 PDP10, PDP11, VAX: const cleanup 2015-02-13 06:18:24 -08:00
Mark Pizzolato
6ce8d99cd8 SCP: Added generic output routine sim_printf to output to stdout and sim_log (and sim_deb when enabled)
The goals here being to simplify calling code while getting consistent output delivered everywhere it may be useful.

Modified most places which explicitly used sim_log or merely called printf to now avoid doing that and merely call sim_printf().
2014-03-28 08:20:05 -07:00
Mark Pizzolato
02cb5c2d88 Compiler suggested cleanups.
Mostly silencing noise warnings, but bugs were found in sim_console.c and pdp11_dmc.c
2014-02-14 17:07:45 -08:00
Timothe Litt
91c7d26095 SHOW IOSPACE, again
Show IOSPACE doesn't always get the number of devices right due to device creativity.

o The distinction between UNIT and DEVICE has blurred
o MUX devices merge several physical devices into one device/unit
o Dynamic device sizing has made things more volatile.

This edit solves the problem for SHOW IOSPACE by adding an (optional) word to the DIBs.
The word contains the amount of IO space consumed by each instance of the physical device that's being emulated.
E.G., if it's a DZ11, the device is the DZ11 module, or 8 lines, even though the MUX device may support 32.

This enables SHOW IOSPACE to determine the number of physical devices being emulated, which is what folks need when configuring software.  The word may have other uses - in a generic dynamic device sizing routine - which is why the amount of IOSPACE per device was chosen rather than the 'number of physical devices.'

The edit should not make any existing device regress.  If the new word (ulnt) is zero (not initialized), SHOW IOSPACE will default to the number of units in the device, or if there's no device (CPUs), 1 as before.  If it is present, the number of devices is the calculated as total allocation/allocation-per-device.

The edit updates all the devices that seem to require this treatment, and all the processors that define the UNIBUS/QBUS DIBs.
2013-07-11 15:39:15 -04:00
Mark Pizzolato
651780c481 Remove stray tab characters which crept in over time 2013-06-03 06:29:01 -07:00
Mark Pizzolato
e82507d9c8 Fixed DZ bug which referenced the wrong dz device when the number of DZ multiplexers configured was not a power of 2 (i.e.3, 5, 7, etc.) 2013-05-16 10:18:07 -07:00
Mark Pizzolato
9faef6ea89 Added separate debugging ability to trace line connect/disconnect activities to better debug virtual null modem cable activities. 2013-05-06 07:50:09 -07:00
Mark Pizzolato
ba87329baa Fix to properly manage modem DCD and RNG state. 2013-04-17 09:32:48 -07:00
Mark Pizzolato
0f078e9168 Added register field decoding to the debug register trace output 2013-04-17 06:17:55 -07:00
Mark Pizzolato
8e858341f6 Complete returning the DZ modem status information as identified in issue #22 and return RI if DTR is not set, and DCD if it is. This solves the modem behavior issue #24 as well. 2013-04-16 11:03:16 -07:00
Mark Pizzolato
814960e253 Properly restore DZ Modem Control state during a simulator RESTORE. 2013-04-16 09:11:24 -07:00
Mark Pizzolato
93c9f35948 Restore DZ modem control state to default on device detach. Properly clear modem bits when modem control enabled. Better display of modem control status. 2013-04-16 05:33:29 -07:00
Mark Pizzolato
610ecaaa93 Adding mode device help 2013-02-05 06:49:39 -08:00
Mark Pizzolato
ef13fdd0dc Fixed to once again display the DZ vector 2013-02-05 04:40:41 -08:00
Mark Pizzolato
28b90552b7 Revised all VAX simulator devices to have proper help information defined to make "HELP dev SHOW" and "HELP dev SET" most useful. 2013-02-02 16:29:38 -08:00
Mark Pizzolato
cbe11147fc Created a way for devices to have a description presentation routine and if it is supplied for its output to be visible with a SHOW SYSTEM command. Provided device description routines for devices used in the VAX simulators 2013-01-25 12:04:25 -08:00
Mark Pizzolato
bf7375354c Fixed compiler warnings 2013-01-24 13:31:34 -08:00
Mark Pizzolato
29cf2a45a8 Added support for register display with bit field definitions decoded 2013-01-24 05:52:50 -08:00
Mark Pizzolato
f4dd30709f Fix DZ issue which didn't report modem bits to the host unless the attach was made with -M. 2013-01-23 19:33:42 -08:00
Mark Pizzolato
83c1d80194 Merge branch 'master' into AsyncTmxr
Conflicts merged and missing changes in new modules added as needed for clock co-scheduling.
2013-01-21 16:52:42 -08:00
Mark Pizzolato
d12bc07d3a Fix clang compiler identified typos 2013-01-15 10:58:09 -08:00
Mark Pizzolato
e1ad710821 Added imbedded help to the pdp11_dz and pdp11_vh devices 2013-01-15 10:20:32 -08:00
Mark Pizzolato
7f57ce2c88 Added help context to pdp11_dz and pdp11_vh 2013-01-10 13:37:31 -08:00
Mark Pizzolato
dac73b9381 Migrating scp and library global variables to be declared as extern in the appropriate library include file and remove repetitive declarations in referencing modules. 2013-01-10 13:29:15 -08:00
Mark Pizzolato
7b6f7a9871 Set device flags indicating DEV_DISK, DEV_TAPE, DEV_MUX and DEV_ETHER for all simulator devices which use the sim_disk, sim_tape, sim_tmxr, and sim_ether libraries 2013-01-07 12:47:24 -08:00
Mark Pizzolato
0a0b8dbe31 Fix DZ when lines is greater than 32. 2012-12-28 11:25:46 -08:00
Mark Pizzolato
7bed091134 Reworked Auto Configure for all Qbus/Unibus devices to have their device address settings table driven from the auto configure code rather than statically defined in many per cpu model include files.
Fixed auto configure bugs which didn't allow Fixed CSR Addresses or Fixed Vectors to be set using the auto configure information.
Fixed display of address and vectors to indicate that the assigned address and/or vector is in the floating set.
Added extended definitions to the auto configure table to reflect all known potential static and floating and static addresses as of VMS V5.5-2
Changed the name of the VAX 11/780 console floppy device name to RXC from RX (which collides with a Unibus name for the RX11).
2012-12-20 13:58:11 -08:00
Mark Pizzolato
37b73c40a6 Fixed bug in DZ SET LINE= implementation 2012-12-18 13:03:21 -08:00
Mark Pizzolato
50cf91d441 Merge branch 'SerialMux' and compiler suggested cleanup 2012-12-18 09:52:14 -08:00
Mark Pizzolato
954cb3405f Added generic ability to have up to 32 DZ Multiplexers enabled in a system. The default is 4 which provides 16 lines on a Qbus system and 32 lines on a UNIBUS system. 2012-12-14 13:31:51 -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
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
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
178f4a743d Merge branch 'master' into SerialMux 2012-04-23 13:03:26 -07:00