Commit graph

398 commits

Author SHA1 Message Date
Mark Pizzolato
84af193474 Correct spelling in comment 2012-12-15 14:53:58 -08:00
Mark Pizzolato
b466bdc9c6 Compiler warning cleanup 2012-12-13 13:41:57 -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
f6af7f4583 vax_7x0_mba.c - Fix bug which didn't defer device interrupts while a transfer was in progress causing OS failure when using multiple RP and RM disks under load. 2012-12-06 08:19:39 -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
97d4f18377 Fix to properly format the CPU boot code load string on ARM platforms (Jordi Guillaumes i Pons) 2012-11-20 04:59:29 -08:00
Mark Pizzolato
8a6d90cf57 vax610_defs,h, vax630_defs.h - Corrected device IPL levels for all qbus devices for the VAX610, VAX620 and VAX630 simulators 2012-11-12 21:29:27 -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
b01fa8fbb0 Addition of MicroVAX II (VAX630) and rtVAX 1000 (or Industrial VAX 620) processor simulators from Matt Burke
Generalized the Boot Code loading support to use common code which has been added to vax_cpu.c
2012-11-09 12:18:15 -08:00
Mark Pizzolato
ecbbcc7228 Added DMC11 Device to the VAX simulator 2012-11-07 14:50:32 -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
732ef8307e vax610_sysdev.c - Generalized the boot parsing.
The supported boot options now are:
	B XQ			; Network boot
	B XQA			; equivalent
	B XQA0			; equivalent
	B RQ			; Boot RQ0
	B RQ0			; equivalent
	B DUA			; equivalent
	B DUA0			; equivalent
	B RQn			; Boot RQn
	B DUAn			; equivalent
	B DUn			; equivalent
	B 			; Boot using boot ROM device search

Also the R5 boot options can be specified either before or after the device name and with or without the R5:

For example:
	B /R5:1 XQ
	B /1 XQ
	B XQ /R5:1
	B XQ/1
are all equivalent
2012-11-05 16:12:41 -08:00
Mark Pizzolato
03bbd66cef vax610_defs.h, vax610_stddev.c - Added SHOW CPU LEDS and SHOW CPU MODEL to the cpu_mod array using the CPU_MODEL_MODIFIERS #define.
- Added dynamic display of the LED values to the console port as the LEDs change during a boot.
2012-11-05 15:56:56 -08:00
Mark Pizzolato
2481a8e148 vax_cpu.c, vax_cpu.h Added optional per CPU #define of CPU_MODEL_MODIFIERS which would be defined in vaxXXX_defs.h and be added to the cpu_mod array. 2012-11-05 15:54:13 -08:00
Mark Pizzolato
69666f1480 Fixed message reporting after command completion:
scp.c,scp.h - Gave priority to a command message handler to determine what values result in displayed messages and exported run_cmd_message for use by simulators which add simulator specific BOOT commands which leverage the run_cmd logic and should also leverage the run_cmd_message for message display

VAX/vax610_sysdev.c, vax730_sys.c, vax750_cmi.c, vax780_sbi.c - Added BOOT command message dispatch to run_cmd_message for simulators which perform preprocessing on BOOT activities but otherwise then dispatch to run_cmd.
2012-10-31 10:09:04 -07:00
Mark Pizzolato
7a09222d51 vax610_sysdev.c, vax750_cmi.c - Added missing register definition to store the cpu_boot_cmd during a SAVE/RESTORE. 2012-10-26 07:55:23 -07:00
Mark Pizzolato
d6f3d328e4 vax750_uba.c - Minor compiler warning cleanup 2012-10-25 11:59:45 -07:00
Mark Pizzolato
76612265ca Addition of MicroVAX I (VAX610) processor simulator from Matt Burke 2012-10-25 11:58:10 -07:00
Mark Pizzolato
9cd3a07ff6 Merge remote-tracking branch 'origin/master' into Extra-VAXen
Merged related functionality into new VAX 750 modules

Cleaned up compiler complaints from the clang compiler
2012-10-22 06:32:38 -07:00
Mark Pizzolato
f8e34b103b Added new VAX750 simulator from Matt Burke 2012-10-22 05:09:10 -07:00
Mark Pizzolato
35b8a40559 Revised the VAX780 to include the pdp11_dmc device 2012-09-28 15:41:49 -07:00
Mark Pizzolato
030d790b4c Asynchronous Timer Support
scp.c, scp.h
	- Change the sim_clock_queue event list to be terminated by the value QUEUE_LIST_END instead of NULL.  This allows easy determination of whether a unit is on a list since when it is not on a list the next pointer is NULL.
	- standardized the usage of UPDATE_SIM_TIME
	- Added support for internal/pseudo devices to support the TIMER and CON-TEL pseudo devices (to enable and disable debugging)
	- Reverted to the prior "SET CONSOLE DEBUG" command semantics since the console debug can be manipulated via the generic "SET <dev> DEBUG" command (i.e. SET CON-TEL DEBUG=TRC;XMT;RCV)
	- Changed "SHOW TIMERS" to "SHOW CLOCKS" to display the current calibrated timer information
	- Added sim_is_active_bool API to return the boolean active status avoiding the potential work walking the list when most callers aren't interested in the event firing time
	- Fixed run_boot_prep to properly record the not queued status of any units which are removed from the sim_clock_queue during initialization
	- Added display of DEBUG, NODEBUG options to the SHOW SHOW command

    sim_timer.c, sim_timer.h
	- Added asynchronous timer capabilities with support for calibration and idling
	- Added internal/pseudo device to support debugging of Idle, Calibration and asynch timer activites.
	- Added suppression of timer calibration when idling has occurred

    sim_tmxr.c, sim_tmxr.h
	- Added tmxr_activate_after and macro definition for sim_activate_after to invoke it for proper behavior with multiplexer devices
	- Added all polling units to the standard timer queue when dropping back to the simulator command prompt to accommodate the potential to disable asynch mode
	- Fixed synchronization to operate with pthread synchronized asynch queue and proper stopping of poll when dropping back to the simulator command prompt
	- Fixed calls to select to have a timeout with properly ranged tv_usec values and dealt with possible EINTR return from select

    sim_console.c, sim_console.h
	- Changed internal/pseudo console telnet device name to CON=TEL
	- Reverted to the prior "SET CONSOLE DEBUG" command semantics since the console debug can be manipulated via the generic "SET <dev> DEBUG" command (i.e. SET CON-TEL DEBUG=TRC;XMT;RCV)
	- Fixed synchronization to operate with pthread synchronized asynch queue and proper stopping of poll when dropping back to the simulator command prompt
	- Fixed calls to select to have a timeout with properly ranged tv_usec values

    sim_defs.h
	- Added necessary unit fields to support asynchronous timing activities
	- Added asynchronous macros to support async timing activities
	- Fixed asynch pthread only macros (not using AIO_INTRINSICS).
	- Fixed the definition of the UDATA macro which was never adjusted to accommodate the insertion of 2 extra fields in the unit structure and thus made the initialization of the unit wait field meaningless.
	- Changed the NOQUEUE_WAIT value from 10000 to 1000000.  This is only used when the sim_clock_queue is empty, which normally never happens on any simulator since they all have clocks and/or other frequently polling devices.  With asynchronous multiplexer and timing support the queue is often empty and this value is then used when calculating idling delays.  If it is too small, idling will be inefficient.  Being large should not be a problem otherwise.

    Interdata/id16_cpu.c
	- removed test of sim_idle_enab before calling sim_idle

    Interdata/id32_cpu.c
	- removed test of sim_idle_enab before calling sim_idle

    vax/vax_cpu.c
	- removed test of sim_idle_enab before calling sim_idle

    vax/vax_stddev.c
	- converted CLK device to use the internal timer service API sim_activate_after to leverage asynchronous timing when available
2012-05-26 07:16:04 -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
ce716f93f6 Fix to avoid excessive compiler optimization of vax ROM access spinwait. Found by Craig Berry, fix suggested by Sergey Oboguev 2012-04-27 13:38:13 -07:00
Mark Pizzolato
57008bb8f5 Cleaned up nested comments 2012-04-27 12:36:03 -07:00
Mark Pizzolato
db9bf32112 Merge of Bob's simh-v3.9-0-rc3 2012-04-23 11:50:43 -07:00
Mark Pizzolato
5f505ccadf Fixing many compiler identified nits. 2012-04-18 09:48:04 -07:00
Mark Pizzolato
eb60957366 Fixed VAX idle for NetBSD and OpenBSD support. 2012-04-12 18:45:57 -07:00
Mark Pizzolato
04098f6007 Fixed VAX idle support for newer versions of NetBSD and OpenBSD to not trigger idling when IPL is changed from the system Boot ROM. 2012-04-12 09:52:55 -07:00
Mark Pizzolato
c1663795f1 Added VAX idle support for newer versions of NetBSD and OpenBSD guests if they use IPL 1 as the idle trigger 2012-04-11 19:24:42 -07:00
Mark Pizzolato
542c15844c Added display of the OS sleep resolution which is now displayed as an explanation if idling is unavailable. 2012-04-11 07:32:06 -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
0dd5185099 Added VH device to the VAX780 2012-03-26 11:53:06 -07:00
Mark Pizzolato
6e813b8364 Merge with v3.9-0-rc2 first pass 2012-03-24 19:46:37 -07:00
Mark Pizzolato
3cc10c3f71 Fixed vax build issue when building on a vax. 2012-03-23 12:40:20 -07:00
Mark Pizzolato
fffad7c20e Merge changes from v3.9-0 rc1 2012-03-19 16:05:24 -07:00
Mark Pizzolato
eb0f027c47 Cleanup Compiler warning. 2012-03-14 17:21:15 -07:00
Mark Pizzolato
f07f08b877 Proper declarations to avoid compiler warnings 2012-03-13 06:53:36 -07:00
Mark Pizzolato
a3973f0e8c Merge branch 'master' into Extra-VAXen 2012-02-28 17:58:44 -08:00
Mark Pizzolato
cf49864327 More robust detection of file transfer/conversion errors in ROM/boot code 2012-02-26 12:38:07 -08:00
Mark Pizzolato
76f68d7b5e Finished merge of recent changes into VAX730 specific modules 2012-02-02 08:31:03 -08:00
Mark Pizzolato
30ef557968 Merge remote-tracking branch 'origin/master' into Extra-VAXen 2012-02-02 08:24:09 -08:00
Mark Pizzolato
d8b900ea8d Make sure that saved VAX clock state is stored in a host platform independent way. 2012-02-02 07:32:38 -08:00
Mark Pizzolato
db5cdc1e6c Merged additional functionality from master branch into Extra-VAXen unique files. 2012-01-27 05:18:38 -08:00
Mark Pizzolato
c2e6a832e8 Merge remote-tracking branch 'origin/master' into Extra-VAXen 2012-01-27 05:03:52 -08:00
Mark Pizzolato
94e1975539 Avoid compiler warnings when time_t is 64 bits. 2012-01-24 13:45:27 -08:00
Mark Pizzolato
3172e743ee Normalized the saved format of the optional VAX TODR persistent file so that it may be moved around from one platform to another along with other simulator state files (disk & tape images, save/restore files, etc.). 2012-01-13 10:51:26 -08:00
Mark Pizzolato
8db25247ba Declare the VAX730 as a non-Qbus system 2012-01-09 03:27:58 -08:00