Commit graph

278 commits

Author SHA1 Message Date
Mark Pizzolato
74482ce448 PDP10, PDP11, VAX: Make sure that the DMC and DUP devices produce the right messages when an attach is attempted to an already attached line 2014-04-06 16:42:10 -07:00
Mark Pizzolato
b5d5ef7b56 PDP10, PDP11: Fix DUP device to properly activate polling on simulator startup (after reset) if any DUP devices are attached. 2014-04-02 13:08:48 -07:00
Mark Pizzolato
edb475fcc1 PDP10, PDP11, VAX: Fix DMC & DUP unit attach strings for multi-line device configurations. 2014-04-02 08:47:35 -07:00
Mark Pizzolato
fa9295c9fd PDP11, PDP10, VAX: Fix DMC and DUP DDCMP debugging output for packet data 2014-04-01 19:35:45 -07: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
e81de979f6 PDP11, PDP10, VAX: Start device connection polling on device reset when any units are attached 2014-03-27 05:12:44 -07:00
Mark Pizzolato
fe005f7d36 PDP10, PDP11, VAX: Fix DUP and DMC devices which couldn't be disabled after having been enabled. 2014-03-19 02:06:10 -07:00
Mark Pizzolato
090b2f83f2 PDP10, PDP11, VAX: Avoid corrupting a DMC/DMR unit attach string when a line state transitions 2014-03-17 08:48:02 -07:00
Mark Pizzolato
a100c88f1d PDP10, PDP11, VAX: Fix compile error due to C++ variable declaration being used instead of C. 2014-03-08 05:56:40 -08:00
Mark Pizzolato
9320c56f3f PDP11, PDP10, AltairZ80: Fixed cases where assert() macro is called with an expression which has side effects and therefore wouldn't get executed if compiled with NDEBUG defined. 2014-03-02 14:50:43 +01:00
Mark Pizzolato
dbe8533352 PDP10, PDP11: Fix compiler indicated invalid check. Fixed #118 2014-03-02 14:50:42 +01:00
Jordi Guillaumes i Pons
f046887e0c PDP11,VAX: Minor change in pdp11_cr.c 2014-03-01 01:20:09 +01:00
Jordi Guillaumes i Pons
8c9a76bf5a PDP11,VAX: Fixed data overrun due to lost interrupts whith idle enabled; fixed garbage got after EOF due to unnecesary interrupt. 2014-02-28 18:58:20 +01: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
Mark Pizzolato
dcbb89499e PDP11,VAX: Fix bug which scheduled the wrong unit when more than one VH device is configured, Fix #113 2014-02-14 11:21:42 -08:00
Mark Pizzolato
59d0602b0d PDP8: Add device buffer flush capability and keep track of data written state in the device buffer. Fixes #87
Finishing the last DECtape device which was missed when this functionality was added to pdp11_dt, pdp18b_dt and pdp8_dt
in commits: 2934112a70 and c9e8121c16

Cleaned up the pdp11, pdp18b and other pdp8 implementations to make backporting cleaner.
Made sure that buffer flushing happens correctly when simulation returns to the sim> prompt.
2014-02-12 21:08:18 -08:00
Mark Pizzolato
f1a10a7ff9 PDP11,VAX: Cleanup declared but undefined local routine. 2014-02-12 17:18:44 -08:00
Mark Pizzolato
e75e52d9a2 PDP10: Fixed display of Unibus and Vector for RY device. 2014-02-12 17:17:46 -08:00
Mark Pizzolato
d7c63d61f2 PDP10,PDP11,VAX: Fix for DMC/DMR error which lost track of pending transmit buffers when timeouts happened during DDCMP protocol startup. Fixes #109 2014-02-11 13:32:37 -08:00
Mark Pizzolato
b1fb809210 PDP10, PDP11, VAX: Added the DDCMP corruption troll to the DDCMP layer and removed it from the KDP device.
Now all DDCMP capable devices KDP, DUP and DMC/DMR have access to packet corruption generation to simulate real world imperfect data lines for protocol testing.
2014-02-10 17:22:19 -08:00
Mark Pizzolato
2934112a70 PDP11,PDP18B: Add device buffer flush capability and keep track of data written state in the device buffer. These are cousin bugs described in issue #87 2014-02-08 05:29:46 -08:00
Mark Pizzolato
1a7f8d4df0 VAX,PDP11,PDP10: Added explicit support to enable (or disable) DMR Micro Diagnostics which corresponds to the SW10 hardware switch.
Also, always process initialization commands without regard to whether the DMC/DMR line is attached and return diag error status if the line isn't attached.
2014-02-07 09:01:22 -08:00
Mark Pizzolato
ffda4c1c41 VAX,PDP11: Fix behavior of simulator when multiple DMC devices are in use concurrently. Fix for issue #51.
The interrupt acknowledgment logic for the transmit interrupt inadvertently cleared the device interrupt pending flag even when other devices potentially had pending interrupts.

Added line specific indications in the debug output for packet trace debugging.
2014-02-05 08:20:43 -08:00
Mark Pizzolato
8cc3791e2a PDP11/VAX: Improved debug information to identify the distinct DMC line when multiple lines are in use and added detailed debug output for DDCMP state machine changes. 2014-02-04 14:45:05 -08:00
Mark Pizzolato
0e11dfea98 PDP11/VAX: Fix VH device to properly be displayed when the number of lines changes and to avoid problems in debug mode. 2014-02-04 11:29:25 -08:00
Mark Pizzolato
4ec1f7ed2b PDP11: Fix to allow allow Q18 devices to be enabled on Qbus systems with memory <= 256KB. Reported by Christian Gauger-Cosgrove.
The devices which are affected by this are: RK, HK, RM and VT.
2014-01-26 18:09:06 -08:00
Mark Pizzolato
9ab6c4d1c1 SOCKET: Extended TMXR packet capabilities to disable the Nagle algorithm when TCP packets transports are used. 2014-01-23 09:31:05 -08:00
Mark Pizzolato
0e753b7c45 Compiler indicated cleanups 2014-01-06 13:14:16 -08:00
Mark Pizzolato
25a62c2837 PDP11,VAX: Added Unibus KRU50 controller type (from Bob Armstrong) 2013-12-10 11:11:41 -08:00
Mark Pizzolato
2daa41ecb3 PDP11: Fixed bug in CSM (John Dundas)
John Dundas said:

Bob and all,

I ran across what I believe to be a bug in the CSM code:

         case 070:                                       /* CSM */
             if (CPUT (HAS_CSM) && (MMR3 & MMR3_CSM) || (cm != MD_KER)) {

According to the Architecture Handbook, CSM may be executed only if the MMR3 bit is set AND the mode is not Kernel.  Changing the code to:

         case 070:                                       /* CSM */
             if (CPUT (HAS_CSM) && (MMR3 & MMR3_CSM) && (cm != MD_KER)) {

also has the effect of making the ZKDKB0 diagnostic much happier.

Thanks,

John
--
John A. Dundas III
2013-12-06 10:54:56 -08:00
Mark Pizzolato
7ebc991b5d PDP11,VAX: Corrected the KRQ50 controller id code (from Bob Armstrong) 2013-12-04 09:55:28 -08:00
Mark Pizzolato
577f921014 PDP11/VAX: Additonal RQ drive types (RA70 and RA73) along with the ability to set additional controller types (from Bob Armstrong) 2013-12-03 12:48:29 -08:00
Mark Pizzolato
55c5d20517 PDP10,PDP11,VAX: Addition of inter operable DUP11, DMC11 and KDP11 devices
This is the results of external KDP development activities.  The KDP side done by Timothe Litt and DMC and DUP by Mark Pizzolato

Additionally, other PDP10 updates from Timothe Litt
2013-11-25 07:00:17 -08:00
Mark Pizzolato
0251c08d12 PDP11/VAX: Detect vector conflicts, SHOW IOSPACE and SHOW DEVICE improvements
From Timothe Litt:
  - Detect vector conflicts, SHOW IOSPACE
  - Detect conflicting vector assignments.
  - Correct show iospace display of high vector for multi-unit devices
  - Display vectors in DEV_RDX in show iospace
  - Ignore disabled devices when searching for conflict.
  - Improve device conflict reporting, Report both devices when address conflict is detected.

From Mark Pizzolato:
  - Added optional alternate radix output display for device address and vector values
    displayed by SHOW DEVICE.
    -H and -O switches select hex or octal output in addition to the default radix displayed
    by the normal simulator.
2013-11-22 07:03:15 -08:00
Mark Pizzolato
3519c6c74b PDP11: Added support for PC values to be displayed in debug output.
This required a simulator specific implementation since the PDP11 PC register isn't stored in a normal memory location.  It is loaded from a temporary location upon simulator instruction execution startup (and saved to that location when instuction execution stops).  In order to reference the PC value while executing instructions (for debug output), this extended access model is required.
2013-11-17 08:55:29 -08:00
Mark Pizzolato
f3626690b7 PDP11: XQ Device is now bootable on a Qbus PDP11 simulator. The ROM based Citizenship tests now pass.
Separate boot ROMs are available for each of the DEQNA, DELQA and DELQA-T devices being simulated.
DEQNA-Lock mode has been added to the DELQA and DELQA-T simulations.
2013-11-16 18:13:09 -08:00
Mark Pizzolato
24b64b517b PDP11: Added missing pdp11_rk boot setup from Bob Supnik 2013-11-10 09:19:01 -08:00
Mark Pizzolato
fdb33ce135 Compiler warning cleanup 2013-11-05 16:42:17 -08:00
Mark Pizzolato
32b8f06362 PDP11/VAX: Properly display the device interrupt BR level for Qbus and Unibus devices in SHOW IOSPACE output 2013-11-04 12:55:08 -08:00
Mark Pizzolato
796cbd2796 Merge branch 'master' of github.com:simh/simh 2013-11-03 13:10:16 -08:00
Mark Pizzolato
f0d41f15d7 PDP11: Fix to correctly set PS value on CPU reset to reflect the model specific ways real hardware behaved. (from Bob Supnik)
Here's a PDP11 SIMH bug as old as the simulator itself: the reset_cpu routine sets the PS to 340 (interrupts disabled). This causes some versions of Lunar Lander not to work. In fact, the initial state of the PS is not architecturally standardized:

      04: cleared (from schematics)
      05: cleared (from manual)
      20: cleared (from schematics)
      34: cleared (from schematics), set to 340 on boot?
      40: cleared (from schematics)
      44: cleared on init, set to 340 on boot (from schematics, manual)
      45: cleared (from schematics)
      60: cleared (from schematics)
      70: cleared (from schematics)
      T11: set to 340 (from spec)
      LSI11, F11: 4 mode behavior (from memory on power recovery, cleared on GO, 340 on boot, mode 3 undefined)
      J11: 4 mode behavior (from memory on power recovery, cleared on GO, 340 on boot, 340 on jump to  custom PROM)

The story seems to be this. All non-VLSI PDP11s used TTL chips to implement the PS, either discrete flip-flops, or 4b registers, or both.
Starting with the first system, the 11/20, they were wired clear on the processor INIT signal (power-up or front panel START switch), so that all internal state started as 0. This worked fine, because START also reset the Unibus and cleared all interrupt enables. So even though the processor was as IPL = 0, no interrupts were possible. Then along came the LSI11...

The LSI11 implemented a line-time clock with NO INTERRUPT DISABLE. Thus, if IPL was left at 0 and a bootstrap routine from a slow device was started (e.g., a floppy drive), the clock would tick, and an interrupt would occur, before the bootstrap routine finished. Because no vectors were set up, the processor would crash. So the LSI11 started the practice, carried over to all later PDP11 VLSI chips, of setting the PS to 340 before jumping to a boot ROM.

The T11 did this in all modes of startup, because its only startup behavior was to jump to a "boot" routine. It did not have a console of any kind.

Accordingly, it appears that the cpu_reset routine needs to set the PS based on the processor model. Further, all boot routines need to set the PS to 0 or 340 based on the processor model. (It's probably safe for boot routines just to set the PS to 340, but it's not technically
accurate.)
2013-10-27 05:30:13 -07:00
Mark Pizzolato
be46bac750 PDP8/PDP11/VAX: Support high speed character input on console and other multiplexer ports instead of limiting input data rate to 1 character per clock tick. 2013-10-23 07:50:39 -07:00
Mark Pizzolato
1e3586ec91 DISPLAY: Latest version of display code from Phil Budne and Doug Gwyn including initial pdp1_dpy and pdp11_vt 2013-10-16 01:02:12 -07:00
Mark Pizzolato
026dd98d83 Merge latest from Bob Supnik 2013-10-12 13:33:01 -07:00
Mark Pizzolato
63e05c77be PDP11: Fix DL help attach regression and missing SHOW IOSPACE details 2013-10-02 08:37:09 -07:00
Bill Heaton
99b4730dc0 Fix build warning on OS/X
PDP11/pdp11_io_lib.c: In function 'show_iospace':
PDP11/pdp11_io_lib.c:363: warning: too few arguments for format

PDP10/pdp10_lp20.c: In function 'lp20_set_vfu_type':
PDP10/pdp10_lp20.c:1038: warning: implicit declaration of function
'toupper'
PDP10/pdp10_lp20.c:1121: warning: implicit declaration of function
'isspace'
2013-09-30 12:10:11 -07:00
Mark Pizzolato
c9844951f7 PDP11/VAX: Make sure that semi-unique drive serial numbers have a zero msb to avoid issues in some operating systems. 2013-09-10 16:27:00 -07:00
Mark Pizzolato
01b3179d93 PDP11: Added help to KE, KG, RF, TA, TC and TM devices. Fixed DECtape documentation. 2013-09-09 05:36:17 -07:00
Mark Pizzolato
786cda7c1b PDP11/VAX: Use semi-unique drive serial numbers when writing BAD144 bad block info to newly created disk images
The 32 bit drive serial number is determined by hashing the newly create filename.
2013-09-09 03:39:00 -07:00
Mark Pizzolato
e18d7e86e4 PDP11/VAX: Use unique drive serial numbers when writing BAD144 bad block info to newly created disk images 2013-09-08 19:42:46 -07:00