Commit graph

2930 commits

Author SHA1 Message Date
Mark Pizzolato
e69c3adf5f SOCKETS: Suppress expected read error message on close of a blocking socket. 2015-02-15 12:06:53 -08:00
Mark Pizzolato
8789172e4a Remote Console: Fixed logic to enter Multi-Command mode (i.e. HALT execution) when input data is queued. 2015-02-15 11:54:48 -08:00
Mark Pizzolato
335def0d32 FRONTPANEL: Added support to debug traffic to/from the simulator 2015-02-15 11:04:18 -08:00
Mark Pizzolato
2c2ffe39bf Remote Console: Restructured so that commands are not executed within the sim_instr() routine.
This approach removes the burden from any simulator code to perform instruction execution postlude before calling sim_process_event and prelude activites when sim_process_event returns.

Remote Console commands are now executed from the same simulator context as if entered from the initial sim> prompt.
2015-02-15 11:00:01 -08:00
Leo Broukhis
d4cb5e8aed BESM6: Clarified terminology, TAB char fix. 2015-02-13 09:33:40 -08:00
Mark Pizzolato
ef9d1adce1 PDP10, PDP11, VAX: const cleanup 2015-02-13 06:18:24 -08:00
Leo Broukhis
68efe4d36a BESM6: Enhanced the front panel, code cleanup. 2015-02-12 20:35:33 -08:00
Mark Pizzolato
4c8e1631b5 FRONTPANEL: Cleanup for building as C++. Add initial support for device panels concurrently on a simulator. Added an API to set a register value. 2015-02-12 14:59:24 -08:00
Mark Pizzolato
9accae5905 BESM6 and VAX: Cleanup for building on VMS 2015-02-12 12:32:39 -08: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
e52ef6407a FRONTPANEL: Make startup of simulator more robust. 2015-02-11 16:38:16 -08:00
Mark Pizzolato
bc9e79a266 SOCKETS: Fixed error suppression when connecting a blocking mode TCP socket 2015-02-11 13:47:54 -08:00
Mark Pizzolato
0b015efcac Compiler suggested cleanup 2015-02-11 12:25:11 -08:00
Mark Pizzolato
5a472f8f55 FRONTPANEL: Initial implementation of a working API for use by external panel applications 2015-02-11 11:16:07 -08:00
Mark Pizzolato
c869a973d3 Remote Console: Exit simulation when a master mode connection is dropped (equivalent to master power switch). 2015-02-11 11:14:52 -08:00
Mark Pizzolato
c7131700c0 Remote Console: Enhancements
- Accept input comments
 - Allow leading and trailing spaces in remote console input commands
 - Force prompt to be "sim> " or "SIM> " when in a master mode console session. "SIM> " used during single command mode.
 - Enhance performance of single command mode input processing by processing all available input characters before actually flushing output buffers

TMXR API extension to add tmxr_input_pending_ln that reports the existence of additional input data

TMXR also now conforms to revised sim_sock API changes
2015-02-11 09:48:05 -08:00
Mark Pizzolato
1fb209c275 SOCKETS: Cleanup, simplify and extend the sim_sock API set.
Cleanup/Simplification by:
	1) removing irrelevant master flag variable from sim_close_sock and thus sim_err_sock
	2) change previous boolean feature arguments (datagram, nodelay, reuseaddr) to flag bits in a single option argument.  This allows for features to be added by new flag bits which don't change the calling signatures.
	3) changed all status returns to be int (vs t_stat) with success being 0 and error being -1
	4) removed unneeded simh specific type references to allow sim_sock to be used by n
Extended API by providing flags to influence socket setup/behavior:
	SIM_SOCK_OPT_REUSEADDR	Retains prior behavior when sim_switches had -U set
	SIM_SOCK_OPT_DATAGRAM	UDP socket setup provided for when prior datagram argument was specified
	SIM_SOCK_OPT_NODELAY		TCP Nagle disable provided for when prior nodelay argument was specified
	SIM_SOCK_OPT_BLOCKING	Blocking socket mode (detault is non blocking)
2015-02-11 09:41:18 -08:00
Mark Pizzolato
5b4e9d5891 SCP: Corrected error message text 2015-02-11 07:03:10 -08:00
Mark Pizzolato
0bf40c2777 VAX, XQ: Removed unneeded variable declaration which caused linker warning using icc compiler 2015-02-11 06:37:57 -08:00
Mark Pizzolato
1c2aed70ba I1401: Fixed treatment of overflow (Ken Shirriff) 2015-02-09 12:33:28 -08:00
Mark Pizzolato
960b22d930 VIDEO: Fix build when using SDL2 versions prior to 2.0.3. Fix #187 2015-02-08 11:33:56 -08:00
Mark Pizzolato
f2674766ca SOCK: Add TCP keepalive support to all incoming and outgoing TCP sockets.
This allows detection of network failures when there is no traffic across established circuits,
2015-02-06 14:52:09 -08:00
Scott Bailey
d8b55677c1 ALTAIR: Reads of uninstalled memory are supposed to return 0377 (0xff). However,
memory bytes beyond the installed limit were being initialized with 0
instead of 0377. Fix comment and the actual initialization loop.
2015-02-06 09:28:29 -08:00
Mark Pizzolato
94b1da0a53 Remote Console: Add EXAMINE and EVALUATE to the single command mode command set and removed IEXAMINE from all command modes since it doesn't work. 2015-02-06 08:17:09 -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 Emmer
3b33804327 SDS: Fix overflow test instructions OVT and OTO
Improper implementation of the OVT and OTO instructions. OV is always zero or one, so the Boolean AND in the  original if statement would always fail. Also, these instructions are supposed to skip if overflow is not set, the opposite of the way it was coded.
2015-02-05 17:42:04 -06:00
Mark Pizzolato
c9eb08c767 VIDEO: Fix build when using SDL vs SDL2 2015-02-05 09:58:40 -08:00
Mark Pizzolato
7fe345c4c0 README: Update to describe QVSS (VCB01) device on MicroVAX3900 (VAX) simulator 2015-02-05 09:44:59 -08:00
Mark Pizzolato
cadf1da832 SCP: Fix duplicate prompt output before each multiple command mode command set. 2015-02-05 09:43:44 -08:00
Mark Pizzolato
4ee599b97e SCP: Added a SHOW VIDEO command for simulators which include video devices
This displays the capabilities of the available SDL environment on the running platform.
2015-02-05 09:22:36 -08:00
Mark Pizzolato
e40d81dbf2 VIDEO: Add proper WRU detection when SIM_VIDEO is used on OS X. 2015-02-05 08:44:16 -08:00
Mark Pizzolato
2f662f2053 SCP: Make sure that WRU is detected by console read processing in the event that it isn't detected by SIGINT 2015-02-05 06:36:13 -08:00
Mark Pizzolato
93a2f9f5a7 VIDEO: Fix build when SDL libraries are not available 2015-02-05 05:55:15 -08:00
Mark Pizzolato
2142168dfd VIDEO: Restructured vid_show_video to perform SDL APIs on the SDL event thread. 2015-02-05 05:07:50 -08:00
Mark Pizzolato
8c4397ee25 VIDEO: Initial working OSX support 2015-02-04 17:03:52 -08:00
Mark Pizzolato
cd4da419bb VIDEO: Changed SDL2 vid_draw implementation to perform all texture references in the event processing thread 2015-02-04 04:53:23 -08:00
Mark Pizzolato
42df753b7d QVSS: Changed vid_draw calls to reference the scan line aligned regions of the video image buffer
Also added debug flag TCURSOR to trace a box around the system cursor image when in use for comparison with the simulated cursor
2015-02-04 04:40:29 -08:00
Mark Pizzolato
4cb4477077 VIDEO: Restructured SDL threading model to perform all event processing in the main thread and run the application main logic in a different thread. 2015-02-03 14:49:45 -08:00
Mark Pizzolato
6ccd7a50ef QVSS: Add a device detach routine to make sure that the any video is properly closed on exit. 2015-02-03 14:48:35 -08:00
Mark Emmer
4bd2eb72de SDS: Corrections to memory trap logic
1. In sim_instr, if an Unauthorized Memory Access trap occurs, the code was enforcing the 940 Reference Manual's admonition that:
    "The instruction in the trap location must be a MARK PLACE AND BRANCH (BRM) instruction."
Normally there is a BRM TRAPM in location 041, but when exploring a memory trap, the TSS monitor code at CEX (SMEM) temporarily puts a BRU CEX2+1 in location 041.

Clearly the hardware allows BRU in the trap transfer vector, because the system uses that feature. Change simulator to allow BRM or BRU in Unauthorized Memory Access Trap vector word in location 041.

2. Page 17 of the 940 reference manual specifies special actions when the target address of a BRU, BRX, BRM or BRR instruction cannot be accessed because it's not in the memory map. The simulator was not doing this, causing TRAPM to operate with the address of the BR? instruction instead of its target address.   The result was to allocate a page of zeros, which then trapped when the branch completed and transferred to a HLT instruction.

By modifying the code in sds_cpu.c to provide the correct trap address, monitor code TRAPM does not allocate a page, and instead allows any user-defined trap to fire off.  This fixes the problem with DDT, which relies on this trap to then map in the DDT SBREK page to 34000 and then complete the transfer to it for command processing.
2015-02-02 21:00:05 -06:00
Mark Pizzolato
383ce78c91 VAX,MicroVAX,QVSS: Video improvements
VIDEO:
- Make mouse motion activity consistent with SDL relative direction.  Add error output when mouse events are discarded due to queue full.
  If a client application delivers motion information in a different relative sense, then that application needs to make the adjustments from the SDL standard direction.
- Added SHOW dev VIDEO capability to describe the underlying SDL video capabilities of the current SDL library and host execution environment.
- Force software based rendering under SDL2.  Enhanced debug info.
- Added host OS cursor integration support.
- Reorganize libSDL vs libSDL2 version implementation to leverage common logic without replication.

QVSS:
- Coalesced adjacent screen row updates to minimize vid_draw operations
- Report all relative mouse motion in the mouse position register AND mouse motion data.
- Added debugging information for cursor and scan line map updates
- Add option "SET QVSS CAPTURED" to force capture input mode.
2015-02-02 16:01:49 -08:00
Mark Pizzolato
729737fb11 Merge pull request #183 from markemmer/master
Conversion table cleanup and allow operand with NOP
2015-02-01 00:32:13 -08:00
Mark Emmer
b63b3953d2 SDS: Allow display or entry of NOP with optional operands
While debugging DDT subsystem of 940 time-sharing system, discovered NOP opcode used with indirection, non-zero operand address and tag field. I_V_OPO (opcode only) was redundant with I_V_NPN (no operand) opcode classes. Convert I_V_OPO to new "operand optional" class and use it for NOP, and add code to detect presence or absence of operand or tag for this class for machine code display and entry.
2015-01-31 23:30:17 -06:00
Mark Emmer
84e816dfaa SDS: Add different 6-bit internal to/from ASCII character conversion tables for 940 mode
The existing conversion tables were for the 930 and earlier models of SDS computers. The SDS 940 altered these tables. This change selects the appropriate table based upon the current CPU mode -- whether operating as a 930 or a 940. See Appendix A of both the 930 and 940 reference manuals for detailed character conversion information.  Correct 930 ASCII to internal table for ASCII input value 0140.
2015-01-31 23:18:04 -06:00
Eric Scharff
af713b78e1 Fix off-by-one in reading cache address from memory
Commit a9ac7c153 properly avoided writing past the end of cache_line,
but in doing so introduced an error as to the first memory address that
should be written. This fix avoids writing past the cache_line by simply
reading the previous memory location.

Fixes the CP/M 68K simulation example and issue #181
2015-01-22 21:58:56 -05:00
Mark Pizzolato
f0f3176c78 VIDEO: Fix build for platforms with SDL2 prior to v2.0.2. Fix #177 2015-01-21 21:38:29 -08:00
Serge Vakulenko
5ed1909839 BESM-6: some correction for indentation and spacing. 2015-01-21 12:29:29 -08:00
Mark Pizzolato
d6e60b88b7 TMXR: Extend Telnet option negotiation to explicitly reject uninteresting options. Fix #177 2015-01-21 06:05:20 -08:00
Leo Broukhis
0ee809546c BESM6: Fonts should be closed explicitly before terminating SDL_ttf. 2015-01-20 21:32:20 -08:00
Mark Emmer
7dfc409da3 SDS: Fix intermittent I/O data errors when two or more I/O channels active
When reading from paper tape on the W channel and writing the drum on the E channel, intermittent errors and premature end-of-record were observed. The TST_XFR macro was failing to properly quality that a data character was available for a particular device and channel. Thus, a data ready condition for the drum would cause a bad transfer for another active device on a different channel.
2015-01-19 19:29:28 -06:00