1
0
mirror of https://github.com/simh/simh.git synced 2026-01-14 15:45:18 +00:00

4932 Commits

Author SHA1 Message Date
Mark Pizzolato
5bfef52c45 Visual Studio Projects: Leverage wineditline support in updated windows-build
- Avoid compiling wineditline library while building every simulator
2024-07-02 20:16:52 -10:00
Charles Horn
7f471eafff I1401: Fix minor typo in error msg 2024-06-27 13:29:18 -10:00
Patrick Linstruth
524a98b235 VIDEO: Add vid_render_set_logical_size() stub
Fixes oversite of missing sim_video stub function.
2024-06-21 11:41:32 -10:00
Mark Pizzolato
6073c022f8 ETHER: Give priority to grep -E vs egrep when determining device mac address 2024-06-21 11:38:12 -10:00
Mark Pizzolato
ebe8fe80c9 makefile: support more robust builds under Android termux 2024-06-21 11:37:04 -10:00
Mark Pizzolato
cc2a00364f SCP: Avoid extra newline output in full SHOW VERSION output 2024-06-21 11:36:08 -10:00
Charles Anthony
da83dab1fb IBM1130: Fix address computation overflow
In sim_instr(), the effective address is computed; for the case of TAG
(index register addressing), the contents of the specified index register
is added to the effective address, but the result is not masked to 16
bits as per the hardware functionality.

Adding a a 16 bit mask operation fixes the issue.
2024-06-12 12:49:00 -10:00
Mark Pizzolato
ca848d92d7 TIMER: Correct K and M rate throttling 2024-06-05 13:51:14 -10:00
Mark Pizzolato
62d7e94266 TIMER: Properly interpret input while setting throttle mode
Allow: n                execute n instructions/cycles per second
           nK              execute n thousand instructions/cycles per second
           nM             execute n million instructions/cycles per second
           n%             occupy x percent of the host CPU capacity
           n/t             sleep for t milliseconds after executing x
                             instructions/cycles
           n{K|M}/t    sleep for t milliseconds after executing x
                             thousand or million instructions/cycles
2024-06-05 11:13:35 -10:00
Mark Pizzolato
e57fdb877b SCP: Properly abort simulator startup when timing info is unreasonable
Erratic host system load conditions can cause timing behaviors to not
be well behaved.
2024-06-03 09:18:27 -10:00
Patrick Linstruth
0d705c98d5 AltairZ80: Adds Cromemco TUART devices
Adds the following devices to AltairZ80:

TUART0: Cromemco FDC controller TUART console port at I/O address 0x00.
TUART1: Cromemco TU-ART port A at I/O address 0x20.
TUART2: Cromemco TU-ART port B at I/I address 0x50.

These devices are fully TMXR capable.
2024-06-03 06:16:41 -10:00
Patrick Linstruth
b2ec2bfd26 AltairZ80: Changes to JAIR devices
This PR makes the following changes to the JAIR devices:

Refactors the service routines into STAT, TX and RX units (thanks @markpizz)
Adds a 128-byte input ring buffer
Corrects a null pointer exception
Adds overrun status bit implementation
Replaces a tab with spaces
2024-06-03 06:11:02 -10:00
Mark Pizzolato
8372d44b60 SCP: Add correct Lock Free asynchronous support for IA64 2024-05-28 13:50:27 -10:00
Mark Pizzolato
24081206a8 SCP: Asynch I/O avoid interlocked instruction on Intel sim_asynch_queue read 2024-05-28 13:48:21 -10:00
Mark Pizzolato
c42efce080 SCP: Clarify Asynch I/O queue debug text and comments
- Add full support DECC on IA64
2024-05-28 13:42:33 -10:00
Patrick Linstruth
318f44eda5 AltairZ80: Adds Cromemco DAZZLER and JS1 devices
Adds Cromemco Dazzler and JS1 joystick devices
Adds vid_render_set_logical_size() to sim_video.c
2024-05-23 15:15:29 -10:00
Patrick Linstruth
a79fc59d06 AltairZ80: Adds Cromemco TUART devices
Adds the following devices to AltairZ80:

TUART0: Cromemco FDC controller TUART console port at I/O address 0x00.
TUART1: Cromemco TU-ART port A at I/O address 0x20.
TUART2: Cromemco TU-ART port B at I/I address 0x50.

These devices are fully TMXR capable.
2024-05-23 13:08:43 -10:00
Richard Cornwell
bcf854ee10 KA10: Fix divide error on KS10, add in some devices.
Fix divide of 0 on KS10 processor.
       Fix write access for auxiliary processor memory.
       Updated support new PIDP10 panel.
       Allow eight Unibux ports on the TEN device.
       Added GE DATANET-760 device to PDP6
       Removed USER mode restriction for idle detection.
       Added Data Disc 6600 Television Display System.
2024-05-21 17:02:00 -10:00
Richard Cornwell
7cd42dce2d I7000: Updated general card reader, printer and magtape
Card reader handle EOF correctly.
         Line printer proper handling of paging.
         Magtape clean up debug message.
         Update 7010, 7070, 7080 for EOF handling.
2024-05-21 14:25:47 -10:00
Richard Cornwell
24c28fc43c B5500: Cleanup some warning from CMAKE. 2024-05-21 14:25:47 -10:00
J. David Bryan
b24bf74f29 SCP: Report optional VM specific release after optional delta in SHOW VERSION
From simh v3.12-5 changes
2024-05-21 14:22:41 -10:00
Mark Pizzolato
5d10f2c724 VAX: Clarify running from ROM test when reading todr_rd
This change only simplifies reading the code.  The functional results
are unchanged
2024-05-21 04:07:00 -10:00
Mark Pizzolato
b19cc2b8ef sim_frontpanel: Correct spelling in comment text 2024-05-21 04:03:58 -10:00
Mark Pizzolato
7ca7f0fb3a SCP: Tolerate quoted LOG(, DEBUG, etc.) filenames which can have spaces 2024-05-03 10:19:46 -10:00
Mark Pizzolato
fbbfe8c987 VAX build tests: Avoid error setting log when debug is disabled 2024-04-29 14:04:16 -10:00
Mark Pizzolato
3bbaab7f5d Visual Studio Projects: Add logic supporting building with different VS2022s
- Multiple VS2022 versions support when windows-build provides it
- Always leverage whatever git version is available locally
2024-04-28 14:12:26 -10:00
Mark Pizzolato
6767c1a9d5 SCP: Allow TYPE command output to be terminated by SIGINT 2024-04-28 14:09:27 -10:00
Mark Pizzolato
c16e379b73 SCP: Cleanup SET ASYNC/NOASYNC status message to use sim_messagef 2024-04-18 16:36:43 -10:00
Mark Pizzolato
d71ce79d13 TMXR: Increase the maximum buffer size for BUFFERed lines to 10 million bytes 2024-04-18 16:35:16 -10:00
Mark Pizzolato
f93994be0a VAXen: Correct wording in the REI comments describing the rules 2024-04-18 16:34:10 -10:00
Mark Pizzolato
997952e712 ETHER: Add build support leveraging libpcap shared object without pcap.h
Some host systems come with the libpcap shared object installed.  If that
is the case, since the default build behavior is to dynamically load libpcap,
builds can now potentially avoid a forced install of the libpcap-devel package.
2024-04-17 11:12:42 -10:00
Mark Pizzolato
b22fb8eefa makefile: Add package install support for Linux systems that have dnf 2024-04-17 11:08:10 -10:00
Mark Pizzolato
f2344dfddc SCP: Add Linux and macOS version to SHOW VERSION output 2024-04-16 18:25:20 -10:00
Mark Pizzolato
4059e7d9f1 README: Update with current info 2024-04-06 12:54:59 -10:00
Lars Brinkhoff
b1389741e5 VAX: Add UW device to 8600 and 8200.
The VAXstation 100 "unibus window" interface board should work with
any Unibus VAX.
2024-04-04 17:34:38 -10:00
Mark Pizzolato
464e1f9ef4 Unibus VAXen: Run working diagnostic supervisor Privileged Architecture tests
- The VAX 11/780 runs the VAX Diagnostic Supervisor the EVKAE (Privilege
   Architecture Exercisor) tests cleanly.
   All other Unibus VAXen execute different instructions in EVKAE
   Test 8 (KERNEL STACK NOT VALID) subtest 2 when compared to the 11/780.
   On these processors a REI instruction with reserved operands is invoked and
   this causes a failure of this subtest for these processors.
   We avoid this diagnostic test that fails.
- The VAX 8200 has some issues with the VAX Diagnostic Supervisor.
   Specifically, the EVKAA (Hardware Core Instruction) test uses the processor
   interval timer to measure the passage of time and expects the interrupts
   that are generated to occur at IPL 24 (0x18).  Meanwhile, the actual
   hardware is documented to generate Interval Timer interrupts at
   IPL 22 (0x16).  EVKAA fails when interrupts occur at IPL 22(0x16).
   If the processor is is built with Interval Timer interrupts at IPL 24(0x18),
   then EVKAA passes, but the EVKAE (Privileged Architecture Exercisor)
   Interval Timer test fails since the interval timer interrupts occur at
   IPL 24(0x18) and not at IPL 22(0x16).
   Once operating systems are running, operating system behavior will
   generally be unaffected if Interval Timer interrupts occur at a higher
   IPL than the OS expects, so the VAX 8200 is built that way and we avoid
   the diagnostic that fails.
- The DEC supplied instruction diagnostics actually time the execution of
   instructions being tested using the interval timer and the time of day
   clock.  When instructions take too long, they fail the test.  The
   VAX 11/730 simulator actually fails some of these instruction tests when
   run at precisely .3 the instruction rate of the VAX/11 780.  We therefore
   adjust the nocalibrate execution rate to 320K vs the VAX 11/780 running
   at 1000K.
2024-04-04 10:19:03 -10:00
Mark Pizzolato
c6de567cf6 All VAXen: Add -O option to SET HISTORY logging to file
- Extend maximum instruction history to 2 million
- -O option in history logging to a file allows only capturing at most
   the last n instructions written to a log file.  Otherwise, the
   default is to log all executed instructions to the log file which will
   consume prodigious amounts of storage.
2024-04-04 10:10:47 -10:00
Mark Pizzolato
81e2719d90 TIMER: Cleanup Inconsistencies and Throttling and IDLE activities
- Make time at sim> prompt consistent when in nocalibrate mode.
- Disable asynch operations when in nocalibrate mode so that all events
   occur consistently.
- Make sure that all throttling modes produce consistent behavior
  related to all timing activities including clock ticks and TMXR port
  speed timing.
- Expose all timer and throttling state variables via simh REGisters
- Only allow throttling to start execution one time.  Throttling can't
   be changed once instruction execution has started.
- Clarification of SHOW CLOCK variable units
- Avoid competing gratuitous keyboard polls with simulators
- Properly enable catchup ticks
- Fix second boot while idling
- Improve calibration while idling
- Report complete timer state when impossible timer conditions exist
   that will cause a simulator abort.
- Leave memory 0 after pre-calibration instruction execution rate.
2024-04-04 10:09:57 -10:00
Mark Pizzolato
b404ccd050 SCP: Make debug timestamps consistent when in NOCALIBRATE mode 2024-04-04 09:56:18 -10:00
Mark Pizzolato
b6f02f3e0c APPVEYOR: Properly avoid saving binaries during Pull Request CI build 2024-03-29 08:18:37 -10:00
ken rector
4692068925 sigma: Implement CM (Chaining Modifier) flag to IOP simulation in sigma_io.c 2024-03-27 21:29:23 -07:00
B. Scott Michel
f7dfefee72 SCP: sprint_val comma bug
- Fix comma separator code segmentation fault: "ndigit - 3" can become a
  very large unsigned number for ndigit < 3.
2024-03-21 13:55:52 -10:00
Peter Schorn
eab060315e AltairZ80: Updated docs to include latest devices 2024-03-20 13:52:58 -10:00
Mark Pizzolato
0ff0d0f8a3 SCP: Enhance EXAMINE address range output
1 - Summarize repeated memory contents so that the memory range with a
      given value only emits 2 lines of output
2 - Allow ^C (SIGINT) to potentially abort long running EXAMINE output
2024-03-20 13:46:14 -10:00
ken rector
93fe10c1e2 SIGMA: Fix three kinds of error in I/O modules.
Discovered while getting standalone System Exerciser to run:

IO: DVT_NOTDEV macro incorrect, Device mapping algorithm creates false
      dispatch points.
      This mapped Multi Unit Controller and Single Unit Controller to same
      device.
DP, DP, MT, RAD:  Test for non-existent device returns wrong status.
DP, DK, MT: TIO status should return non-operational for unattached device.
2024-03-20 09:13:38 -10:00
Patrick Linstruth
b523caac82 AltairZ80: Enable interrupt event after BOOT 2024-03-20 08:51:36 -10:00
Richard Cornwell
c856f48634 SIM_CARD: Fixed issues caused by last commit to sim_card.c 2024-03-20 08:50:57 -10:00
Patrick Linstruth
57f055b34f AltairZ80: Adds SET CPU RESIZEMEMORY and other
Changing the CPU type or MEMORY size/configuration causes memory
resources mapped by other devices to be removed. This is not made
clear by "HELP CPU" and the user has no feedback that this is
happening.

This PR does the following:

1) HELP SET CPU shows that SET CPU MEMORY requires a value.
2) Feedback is provided if the value is omitted or not properly formatted.
3) Unmapped memory resources caused by a SET CPU command are displayed
   on the SIMH console.
4) Adds a SET CPU RESIZEMEMORY command that resizes system memory
   without unmapping other device memory resources.
2024-03-20 08:44:46 -10:00
Patrick Linstruth
d19d3f9b8d ALTAIRZ80: Adds JAIR devices to simulator
Josh's Altair/IMSAI Replacement (JAIR) is a single board computer
(SBC) for the S100 bus. I created this device to assist a friend
with getting IMP and CBBS working on his JAIR. Without having a
JAIR myself, AltairZ80 to the rescue!

The following devices are added:

JAIR   - The main JAIR board I/O and ROM
JAIRS0 - Serial Port 0 (COM1)
JAIRS1 - Serial Port 1 (COM2)
JAIRP  - Parallel Port

This was a bit challenging because the JAIR uses an on-board SD
card with FAT file system to hold its BIOS and CP/M disk images.
The ATTACH command is used to mount SD card images to the
simulator. The simulator emulates the SD card interface for
read/writing SD card sectors. These images are easily mounted on
a Mac making moving files around easy. I do not know about Windows.
These same images can be written to an SD card and used with real
JAIR hardware, which may be useful for JAIR owners.

The serial and parallel ports fully support TMXR. Host serial ports
and sockets may be attached to these devices.

I am working on a GitHub repository containing an SD card image and
init script that will boot CP/M 2.2 on the JAIR simulator.

Is this device one that should be added to AltairZ80?
2024-03-20 08:38:08 -10:00
Patrick Linstruth
ada4b67d07 ALTAIRZ80: Add 1K RAM to SOL20 device
The Sol-20 provides 1K RAM at C800. This was discovered to be missing
when issuing a "SET CPU 24K" command. Without the CPU providing RAM
at C800, the Sol-20 would not function. This PR corrects the problem
by having the SOL20 device provide its own 1K RAM at C800.
2024-03-20 08:24:05 -10:00