Commit graph

2102 commits

Author SHA1 Message Date
Mark Pizzolato
ae52f4c331 TIMER: Add correct sim_activate_time functionality for all timer cases.
Also:
- allow a timer to dynamically stop itself (by calling sim_rtcn_calb
   with tps=0), and then to start the internal timer to provide a calibration
   baseline if necessary.
- Fix coschedule interval computation when the queue is empty.
- Properly select the correct timer for coscheduling without a specific tmr
- Properly adjust the coschedule queue's next time value when entries are
   canceled.
- Cleaned up throttling to behave well with all potential throttling rates and
   to make visible what is happening when boundaries are reached.
2016-12-15 09:57:34 -08:00
Mark Pizzolato
7022f0c1b2 VAX: Fix interval timer to properly synchronize with calibrated clock ticks 2016-12-14 09:30:44 -08:00
Mark Pizzolato
76d5c34d85 DOC: Add argument substitution and %DATE_MONTH% 2016-12-12 14:12:41 -08:00
Mark Pizzolato
e776a37e08 TMXR: Fix tmxr_clock_coschedule() to properly convert to ticks 2016-12-12 12:50:49 -08:00
Mark Pizzolato
eea394422e VAX, VAX750, VAX780, VAX8600: Properly coschedule console input with TMXR_MULT
The timer specific coscheduling routines take ticks as the delay argument
2016-12-12 01:53:49 -08:00
Mark Pizzolato
180b03107e TMXR: Properly accept ticks rather than instructions in coschedule APIs 2016-12-12 01:51:18 -08:00
Mark Pizzolato
7db2dc10de TIMER: Fix coschedule dispatch logic and internal timer cleanup
Additionally, calls to sim_activate_after with delay values that exceed
twice the tick size of the calibrated clock are now coscheduled with
the calibrated clock.
2016-12-12 01:50:09 -08:00
Mark Pizzolato
1c4b6644c1 PDP10: Change idling to generically use sim_idle() everywhere 2016-12-10 12:01:19 -08:00
Mark Pizzolato
5d8553e24c TIMER: Enabled catchup clock ticks
Historically, hosts which have a tick size slower than the tick a simulator
wants to implement can't idle effectively and keep good time.

This change allows simulators which call sim_rtcn_tick_ack() to provide
useful idling behavior while still keeping the passage of wall clock time
to time in the simulator accurate.
2016-12-10 11:59:49 -08:00
Mark Pizzolato
1c3c50fd26 VAX, VAX780, VAX750, VAX8600: Make TODR state file endian independent
When the TODR device (CLK) is attached to a state file, it operates in OS
agnostic mode.  This file can now be ported between hosts with different
endianness and work consistently to track the time of year.

Additionally, the VAX and VAX750 TODR values now properly don't
progress when they have zero values (or when they overflow back to zero).
2016-12-09 18:01:21 -08:00
Mark Pizzolato
c393675b5b REMOTE_CONSOLE: Allow user selectable command output buffer size
The output of remote console commands gets truncated at the configured
buffer size.  The default has been raised from 1400 to 8192.
Common remote console usage is from the same host as the simulator and
as such localhost TCP traffic is delivered in chunks at least 8192 so no extra
packets will be involved in transporting the potential extra data and no
transmission delays on the send() call.
The minumum size is now 1400 (which was the prior default).
2016-12-08 11:27:07 -08:00
Mark Pizzolato
a7593385aa VAX: Fixed Interval timer simplification
Reading the interval timer register while the timer is running needed
to be reflect usecs
2016-12-08 05:32:08 -08:00
Mark Pizzolato
19250950c5 TIMER: Change internal THROTTLE device name to avoid SET THROTTLE collision 2016-12-07 16:17:40 -08:00
Mark Pizzolato
c420925a75 DOC: Corrected description of log behavior and made help and doc consistent 2016-12-07 05:46:29 -08:00
Mark Pizzolato
0a7996d9e3 TIMER: Fix statistics for Internal Timer and operation with multiple timers 2016-12-06 15:49:13 -08:00
Mark Pizzolato
63a16c4ed4 VAX: Simplify Interval Timer implementation
Use actual microsecond references, with the value synchronized to the CLK
device and all delays scaled to the calibrated instruction execution rate.
2016-12-06 13:36:01 -08:00
Bill Beech
23f187d887 makefile: remove experimental ibmpc and ibmpcxt simulators from 'make all' 2016-12-06 12:56:46 -07:00
Mark Pizzolato
b378072c95 makefile: remove misspelled experimental simulator name imbpc 2016-12-06 10:03:32 -08:00
Mark Pizzolato
0d5c86d0a9 makefile: Remove imds-225 from 'make all' - still experimental
Fix #359
2016-12-06 09:06:22 -08:00
Mark Pizzolato
cf14061c64 Visual Studio Projects: Clean up builds with Visual Studio 2015 2016-12-05 15:47:52 -08:00
Mark Pizzolato
eb333a845e TIMER: Fixed calibration idle skip percent logic
Also:
 - Added more statistics
 - Made sleep measurements more precise
 - Correct idle sleep decision logic without regard to host tick size
 - Fix calibration setup/teardown when host tick size is large (>10ms)
 - Generalized large host tick test capability (MS_MIN_GRANULARITY)
 - Fixed Windows sim_os_msec() to always use timeGetTime()
 - Fixed coschedule routines (that don't mentoin a tmr) to default to
    timer 0 and fallback to the internal timer otherwise.
 - Removed dependency on sizeof(tv_sec) in timespec structure for MinGW
2016-12-05 15:32:29 -08:00
Mark Pizzolato
7498f183d2 VAX: Added debug options for SYSD device (TMR, TODR, CNF) 2016-12-05 14:57:35 -08:00
Bill Beech
c24a6a28b2 ISYS8024, ISYS8030: Add initial new simulators 2016-12-05 13:04:01 -07:00
Bill Beech
2947c39ffe ISYS8010, ISYS8020: Latest update 2016-12-05 12:54:15 -07:00
Mark Pizzolato
0ef87fac53 DOC: Clarified SET DEBUG, SET LOG and SET CONSOLE LOG documentation and help 2016-12-05 06:03:41 -08:00
Mark Pizzolato
0a0bad9139 PDP11: TC11 - Revised to model TCCM correctly
As reported by Josh Dersch in #358

   Read hardware notes:

   - While the TCCM error bit is a real flop, it is supposed to reflect
     the OR of the TCST error bits at all time, so it is updated on read.
   - A read of TCDT while the function is RALL clears DONE.

Write hardware notes:

   - The TC11 behaves much more like a traditional DECtape controller
     than a typical PDP11 peripheral. In particular, execution is
     initiated/controlled by any write to TCCM, rather than setting
     the GO (DO) bit. Unless the function is STOP or STOP ALL, writing
     TCCM will put the selected tape in motion.
   - Writing GO (DO) clears DONE (READY) and the error flops in TCST.
   - Writing a 0 to ERROR clears the error flops in TCST. Because it
     is write 0 to clear (later controllers used write 1 to clear),
     the simulator has to know whether ERROR is actually written.
   - STOP ALL ignores select errors. Every other function is rejected
     if there is a select error.
   - An illegal operation (setting ILO) will stop the selected tape.
   - A write of TCDT while the function is RALL, WALL, or WTMK clears
     DONE (READY). RALL should not be included, but it saved a gate
     not to prevent it.
   - Because DONE (READY) may not be clear when an operation completes
     and DONE (READY) is set, the DT_SETDONE must test for DONE (READY)
     not being already set.
2016-12-04 11:09:55 -08:00
Mark Pizzolato
9a69fa8b49 DISK: Remove $ from all variable names for clean compiles on all gcc versions 2016-12-02 15:05:53 -08:00
Mark Pizzolato
b98ece819b DISK: Extended and corrected autosize logic for disk attach.
Previously only the actual size of the container file was used when
attaching a disk.  This was correct only when the size of the container
file actually aligned with the simulated disk drive.  disks created with
sim_disk_attach automatically write to the last sector of a simulated
disk file when the disk is created.  Therefore, auto sizing worked correctly
for any disk created with sim_disk_attach.

Disk images created with simh prior to 4.X would only write to the
portions of the disk drive when the simulated system writes data.  These
disk images would only be properly sized if the simulated operation of
the disk had actually written to the last block of the disk.  Auto sizing of
these disks would usually size the resulting disk incorrectly and strange
behaviors might occur when using such an incorrectly auto sized disk.

Fixes #357
2016-11-29 18:53:52 -08:00
Mark Pizzolato
60fb70128c TIMER: Add additional calibration skip while idling counter statistic 2016-11-28 17:40:24 -08:00
Mark Pizzolato
165c37acee DISK: Add -U attach option, to fix VHD differencing inconsistencies
-O allows overriding for testing purposes.
-U allows overridden checks to update and fix the inconsistencies

As discussed in #352
2016-11-28 03:35:01 -08:00
Mark Pizzolato
f8147fca84 PDP10: Fix typo in sim_rtcn_tick_ack setup 2016-11-27 15:42:58 -08:00
Mark Pizzolato
8b73304322 PDP10: Add recording of clock tick acknowledgments. 2016-11-27 12:58:08 -08:00
Mark Pizzolato
5e201a4407 SCP: Pretty up seconds conversion when days are involved 2016-11-27 12:38:30 -08:00
Mark Pizzolato
b83dae2db2 TIMER: Make sure internal timer doesn't restart after a CONTINUE unless needed 2016-11-27 12:37:35 -08:00
Mark Pizzolato
f285e939a8 SCP: Added suggestive clarification to ATTACH help try HELP <device> ATTACH 2016-11-26 15:52:38 -08:00
Mark Pizzolato
df3fbc3fb4 DISK: Fix -O option for differencing disks 2016-11-26 15:41:10 -08:00
Mark Pizzolato
3511b5e4e3 DISK: Fix -O functionality to override VHD differencing disk consistency checks 2016-11-26 07:06:19 -08:00
Mark Pizzolato
4f1f439174 DISK: Fix auto detect format attach logic for non VHD disks #356 2016-11-25 16:25:43 -08:00
Mark Pizzolato
1ec46fbe11 TIMER: Make sure timers are properly saved and restored after ^E CONTINUE 2016-11-24 01:21:36 -08:00
Mario Abruzzi
47a49c3fda DOC: Added section for centos to 0readme_ethernet.txt
The uml utilties package is part of EPEL and named uml_utilities and not uml-utilities.
2016-11-23 12:14:46 -08:00
Mark Pizzolato
d4082f383e PDP10: Added debug support to clock device (TIM) 2016-11-22 22:29:32 -08:00
Mark Pizzolato
1845fcd53b Visual Studio Projects: Enable asynch I/O (and clocks) for PDP10 simulator 2016-11-22 22:14:37 -08:00
Mark Pizzolato
be47d8539f TIMER: Fix Idling when transitioning betwen multiple calibrated clocks 2016-11-22 22:06:25 -08:00
Mark Pizzolato
89e372ba92 TIMER: Restore functionality for clocks devices that don't use sim_activate_after
Clock devices which call sim_register_clock_unit or sim_register_clock_unit_tmr
are best behaved if they use sim_activate_after to schedule their tick events.
2016-11-22 01:24:26 -08:00
Mark Pizzolato
df80f22152 DISK: Add better error reporting when differencing VHD attach fails 2016-11-21 21:30:46 -08:00
Mark Pizzolato
0a12499a44 PDP10: Fix timing code to use ceil() since round() isn't always available 2016-11-21 15:51:36 -08:00
Mark Pizzolato
522287cb8e SCP: Fix display of multi-bit masks and HELP dev SET output 2016-11-20 15:11:01 -08:00
Mark Pizzolato
d28834fbbf PDP10: Fix 2% wallclock issue for 50 Hz systems (R. Voorhorst) 2016-11-20 14:08:58 -08:00
Mark Pizzolato
8448580a3a SCP: Add support for debug matching multiple bit masks 2016-11-20 13:19:52 -08:00
Mark Pizzolato
f046171269 TIMER: Fix problem activation time for clock units 2016-11-20 13:06:41 -08:00