1
0
mirror of https://github.com/simh/simh.git synced 2026-01-11 23:52:58 +00:00

528 Commits

Author SHA1 Message Date
Patrick Linstruth
99a9a74e48 Altair8800: Adds new MITS 88-ACR (ACR) cassette device
BUS: Update formatting
SIO: Do not attach to BUS when disabled
Changed CONST to const
2026-01-02 08:18:21 -05:00
Mark Pizzolato
c31ea266e2 ETHER: Add support for Omni OS and Open Indiana plus bridged network support
- Some versions of Omni OS no longer include sys/filio.h in sys/ioctl.h
- Add more robust support for locating OS tools in scp.c
- SHOW VERSION output displays SunOS host system specific info

Fix #1238
2025-12-14 13:43:34 -10:00
Mark Pizzolato
9c20f9ca35 makefile: Add support for building all simulators on illumos (Open Indiana)
- Proper compiler detection selects 64bit libraries when gcc generates
  64bit code.

Fix #1237
2025-12-09 16:43:14 -10:00
Patrick Linstruth
aad5351080 Altair8800: New Simulator
This is the initial release of the Altair8800 simulator.

Why another Altair simulator? AltairZ80 has been described as a
“software simulator”, where the intent is to run software designed
specifically for executing under a simulator. Altair8800 is intended
to accurately simulate the Altair hardware and execute software
that will run unchanged on real hardware. Software and disk images
can be moved between the Altair8800 simulator and real Altair and
other S-100 hardware without any changes. The Altair8800 simulator
is a tool that can assist with the restoration of vintage Altair
and other S-100 hardware and software along with the development
of new hardware and software. The accomplish this, the following
are major differences between AltairZ80 and Altair8800.

* The monolithic design where devices access other devices directly
through external variables and functions is no longer supported.
All devices exchange data through a new BUS device. Memory and I/O
address decoding and transfers are now handled by the BUS device.
All interrupt requests are handled by the BUS device.

* System RAM was moved from the CPU device to a new RAM device and
managed by the BUS device.

* Banked RAM was moved from the CPU device to a new BRAM device.

* Banked RAM can only be accessed through the BUS device. Memory in
banks that are not currently selected cannot be accessed. The AZ80
“banked” RAM was removed.

* ROMs were moved from the CPU and DSK devices to the new ROM device.
Mike Douglas’ Altmon Monitor is also available through the ROM
device. The custom AltairZ80 ALTAIRROM, which is not compatible
with original Altair disk images, is also available.

* The custom ALTAIRROM boot loader was replaced with the original
MITS Disk Boot Loader as the default ROM.

* The monolithic Multiple-CPU/RAM/ROM/IO/BankedRAM CPU device has
been replaced with a generic CPU device that provides an abstraction
layer between SIMH and the supported CPU architectures (currently
8080 and Z80). All IO is handled through the BUS device. RAM, Banked
RAM, and ROM are each handled by their own independent devices.

* The AltairZ80 SIO device was replaced with the M2SIO0 and M2SIO1
devices. The M2SIO devices fully support TMXR.

* A new SIO device was added to provide generic, programmable, Serial
IO. TMXR is not supported on this device.

* The Altair 8800 did not have PTR or PTP hardware devices. They have
been removed and replaced with the M2SIO1 device. PTR and PTP devices
are defined by software executing on the simulator.

* Contention between multiple enabled serial devices checking the
single host keyboard for input is now handled by the BUS device.
Port 0xFF sense switches was moved to a new SSW device and IMSAI
programmed output was moved to a new PO device.

* The SIMH pseudo device no longer uses the removed PTR and PTP
devices. The SIMH device has its own IO system. To avoid conflicts
with other devices and remain compatible with the R and W utilities
written for AltairZ80, SIMH “borrows” I/O ports 12H and 13H during
file transfers. Only SIMH commands needed to support R and W file
transfers are supported. All other SIMH commands were removed.

* AltairZ80-specific versions of CP/M are not supported by Altair8800.

* PC queue was removed from CPU device and replaced with CPU HISTORY.

* The Altair8800 simulator only supports 16-bit address and 8-bit
data buses. 8086 and 68K CPU architectures were removed.

* All CPU timing (clockFrequency) and “sleeps” (SIO SLEEP) have been
removed. SIMH THROTTLE is fully supported and is the recommended
way to manage simulator speed and host CPU utilization. Executing
“SET THROTTLE 100K/1”, for example, should provide ample speed
without tasking the host CPU.

* HEXLOAD and HEXSAVE commands were added. The LOAD “-h” option has
been removed. Intel Hex and sRecord (coming soon) formats are
supported.

* The WD179X device was converted to an API.

* A new DSK API was added to provide a consistent way to manage soft
sector raw disk images.

* Support for the proprietary IMD disk image format was removed. Only
RAW disk images are supported.

The following devices are supported by this initial release:

BUS - Altair (S-100) Bus
CPU - Intel 8080 / Zilog Z80
RAM - 64K RAM
ROM - ROMs
BRAM - Banked RAM
DSK - MITS 88-DCDD Floppy Disk Controller
M2SIO0 - MITS 88-2SIO Port 0
M2SIO1 - MITS 88-2SIO Port 1
SSW - Sense Switches
PO - Programmed Output
SIO - Generic Serial I/O
SBC200 - SD Systems SBC-200
TARBELL - Tarbell SD and DD Floppy Disk Controller
VFII - SD Systems VersaFloppy II
SIMH - SIMH Pseudo Device
2025-11-21 17:01:40 -05:00
Mark Pizzolato
c986b9082b makefile: Revert to prior build behavior when GNU make 4 isn't available 2025-11-12 14:33:49 -10:00
Mark Pizzolato
7cde9d27ba makefile: Defaults now show summary build commands and separate module compiles
- Invoking make with QUIET=0 (or in an exported environment variable)
  will display the full compile and link commands executed.
- Invoking make with BUILD_SEPARATE=0 will cause each simulator
  being built to be built with a single compile and link command.
  This is how things were previously, but now the default has been
  changed to more easily support active simulator development
  by compiling files that have changed.
- Silence link time warning on macOS
- cleanup C++ support for ND100 and C++ builds of other simulators
2025-11-04 15:21:37 -10:00
Mark Pizzolato
31c211c502 makefile: Remove redundant -lSDL2 library declaration from altairz80 build
Some environments don't complain, macOS has started to complain about
this.
2025-10-24 17:41:27 -10:00
Mark Pizzolato
16ee39a139 SAGE: Change various Intel part devices to unique names
This avoids potential filename confusion between simulators when
building with separate compiles.
2025-10-24 15:42:54 -10:00
Lars Brinkhoff
f5f2930712 LINC: New emulator for the classic LINC.
This emulates the classic LINC.  The design was settled in 1965,
increasing memory to 2048 words, and adding a Z register, an overflow
flag, and an interrupt facility.
2025-10-12 18:34:50 -10:00
Mark Pizzolato
1bce78cf38 makefile: Cleanup build issues on some macOS and Android 2025-10-10 22:30:55 -10:00
Mark Pizzolato
4562c3cf17 makefile: Tolerate host platforms which no longer package libpcre
- Also provide better support for termux builds on different Android
  versions.
2025-10-10 19:16:51 -10:00
Mark Pizzolato
46c6398912 makefile: Fix prompting of adding missing packages in some cases 2025-09-01 16:01:11 -10:00
Lars Brinkhoff
02ebdd38d5 PDP8: Add Type 34 display support. 2025-08-28 10:41:22 -10:00
Mark Pizzolato
caea0c0970 ETHER: Add vmnet support for macOS Catalina 10.15.7 through Big Sur 11.7.10 2025-08-14 08:55:49 -10:00
Mark Pizzolato
d0950d17ba makefile: Cleanup redundant pthread library and simplify auto installs 2025-07-31 05:41:24 -10:00
Mark Pizzolato
f3f1809352 makefile: correct dependent package names for OpenSUSE Linux 2025-06-18 17:11:48 -10:00
Mark Pizzolato
44aef3392e ETHER: Properly determine interface MAC address under vmnet APIs
- Avoid using vmnet when compiler is gcc since completion routines
  are a clang only feature
2025-06-08 08:58:33 -10:00
Mark Pizzolato
5f6eed2119 makefile: Fix typo only a problem with 'make besm6' or 'make all' 2025-06-07 02:21:49 -10:00
Mark Pizzolato
61fe27cb47 ETHER: Add Apple vmnet support when running on macOS
Base vmnet support covers bridged network interfaces and locally
accessible TAP network connections. These reflect the vmnet bridged
and host behaviors which are leveraged under the covers, but configured
using the original sim_ether commands.  The resulting bridged case
behaves like the Windows network connections do (with direct access
to and from the local LAN as well as the host system) using the natural
interface name.  NAT behaviors are specifically supported using the
original SLiRP code since the vmnet support depends on simulators
primarily getting IPv4 addressing via DHCP, but essentially no simh
simulators actually had OS network code which used DHCP and all
merely used static network address setup.  The vmnet (shared/NAT)
support can't be configured to operate with the same DHCP and static
IP addresses provided by the original SLiRP implementation and to
avoid the need to specifically change hard coded simulator IPv4
addresses before things could work.

- Detect which network interfaces are WiFi (when possible) and thus
  not useful candidates for bridging.
- Cleanly report when running as root is needed.
- Avoid allowing network connections to interfaces which aren't
  actually connected to a network.
- Add support to explicitly set TAP network host side network
  interface's IPv4 address and netmask.  This optional support is
  provided specifically for the Apple vmnet case, but not for other
  platforms using TAP network connections due to the various ways
  that must be handled with external commands.
- Add host system's IPv4 address, netmask, media type and connection
  state to interface descriptions visible via SHOW ETHERNET.
  Some system environments may have a significant number of potential
  network interfaces, most of which aren't interesting to connect
  simulators to.  Knowing which interfaces are actually in useful
  states helps users select the correct device.

The vmnet aspect of this functionality was originally inspired by
Calvin Buckley's pull request to the open-simh repository.  That
solution wouldn't actually operate well certainly for NAT cases due
to the forced DHCP to non-configurable address blocks and the lack
of any way to support static addresses TCP or  UDP port mapping.
2025-06-06 14:51:46 -10:00
Mark Pizzolato
0da98bcd50 makefile: Build cleanly when local language isn't English
gcc version determination only works reliably when language is set
to english.

Fix #1215
2025-05-31 06:44:55 -10:00
Mark Pizzolato
bb6a21042e makefile: Add build support on Chimera Linux 2025-05-30 16:18:58 -10:00
Mark Pizzolato
8bc2bfce93 makefile: Add baseline HomeBrew support for Apple ARM platforms 2025-05-12 16:13:26 -10:00
Ken Rector
5421c9c22e sigma: Update latest from Bob Supnik's v3.12-5
- Add new CP and CR devices
- COC: Zero delay from SIO to INIT state Detect and UEN on 0xFF order
- COC: Moved SIO int pending test to devices
- DK: Zero delay from SIO to INIT state
- DP: Added case points for RDEES, dp_aio_status
- DP: Zero delay from SIO to INIT state
 - defs:  Added chaining modifier flag
 - defs:  Fixed DVT_NODEV definition
 - defs:  Added chan_chk_dvi definition
 - io: Added chaining modifier flag
- LP: Zero delay from SIO to INIT state
- LP: Added INIT test for illegal command
- LP: Moved SIO interrupt test to devices
- MT: Zero delay from SIO to INIT state
- PT: Zero delay from SIO to INIT state
- PT: Moved SIO interrupt test to devices
- RAD: Zero delay from SIO to INIT state
- RAD: Fixed nx unit test
- RAD: Fixed write protect test
- TT: Zero delay from SIO to INIT state
- TT: Moved SIO int pending test to devices
2024-07-29 10:10:17 -10:00
Mark Pizzolato
d2cd594cde PDP11: Integrate RR (RP11) device with full sim_disk capabilities 2024-07-20 15:08:19 -10:00
Peter Schorn
c7df248f09 SIMH: Fix spelling errors in comments and strings 2024-07-16 12:04:53 -10:00
Mark Pizzolato
ebe8fe80c9 makefile: support more robust builds under Android termux 2024-06-21 11:37:04 -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
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
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
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
Mark Pizzolato
6d7dea6200 makefile: Add AUTO_INSTALL_PACKAGES build option
If running as root on most platforms or running on macOS with Home
Brew package manager, any missing packages for maximal simulator
functionality can be automatically installed during the build.
2023-08-20 08:18:14 -10:00
Mark Pizzolato
6bf717976b makefile: Isolate pthreads and png dependencies to binaries that need them
- pthreads are needed for network capable systems and video capable simulators.
- png is only needed for video capable simulators.
2023-08-12 15:33:31 -10:00
Mark Pizzolato
1d8a141b73 makefile: Remove errant message display and standardize all build options
All options which are currently and previously described in the comments
as allowing {option-name}=1 to enable, are now enabled if {option-name}
is defined to be anything at all,
2023-08-08 01:45:51 -10:00
Mark Pizzolato
412385f978 makefile: Add option to automatically run brew for missing dependencies 2023-08-05 08:02:24 -10:00
Mark Pizzolato
f9dedad627 makefile: curl needs to be actively installed on some platforms
- Make missing curl or tar visible in simulator environment variables:
       SIM_CURL_CMD_AVAILABLE
and SIM_TAR_CMD_AVAILABLE
2023-07-29 08:09:48 -10:00
Mark Pizzolato
63028863e4 SCP: Default to dynamically loading LIBEDIT, LIBPCRE and LIBPNG 2023-07-27 06:28:53 -10:00
Mark Pizzolato
9932fd1610 makefile: Add support for building on OpenSUSE Linux 2023-07-27 06:19:48 -10:00
Mark Pizzolato
2dc0d099f2 makefile: Robustly find simulator test scripts
First look in the directory the first dependent file is located in, if
not found, then look in the first simulator specific include directory.
2023-07-20 14:47:25 -10:00
Mark Pizzolato
329a0f815b AppVeyor: Multi-Platform Parallel build with artifacts with no GitHub actions 2023-07-04 21:04:56 -10:00
Mark Pizzolato
37bc857bf1 makefile: Add current support to build on Android Termux environments 2023-06-17 06:15:25 -10:00
Mark Pizzolato
972cd95914 PDP11: Add extra RPB device as an additional Massbus device
Note: To avoid potential breakage of existing PDP11 configurations in
       the wild, which may expect RP on RHA, TU on RHB and RS on RHC,
       RPB is connected to RHD Massbus adapter.

- More robust recovery when Massbus configuration errors occur
- More complete RH{A,B,C,D} help
2023-05-22 11:36:52 -10:00
Mark Pizzolato
6e7cf79eb3 VAX750, VAX780, VAX8600: Add Extra Massbus for New RPB disks 2023-05-22 11:03:39 -10:00
Peter Allan
ef0f49204e VAX780: Add an additional Massbus to support RPB 2023-05-22 10:37:26 -10:00
Mark Pizzolato
d36d900968 makefile: Fix regression that skipped running per simulator specific tests 2023-05-22 07:46:51 -10:00
Mark Pizzolato
6045fea046 makefile: Remove dependency on which command 2023-05-22 03:23:23 -10:00
Lars Brinkhoff
d573965024 VAX: M7452 Unibus window module for VAXstation 100. 2023-05-09 07:07:39 -10:00
Mark Pizzolato
bc5dcedf1d MicroVAX1: Remove DMA devices which weren't supported on MicroVAX I
Removed TQ (TMSCP), TS (TSV11) and VH (DHV11) devices from this
simulator since these devices were never supported in release MicroVAX I
configurations.

Lacking a scatter/gather map, DMA devices needed to be written to
perform DMA into contigous buffers in low memory and then copy data
to user space buffers.  The MSCP protocol devices had specific support to
do scatter/gather transfers as part of the protocol.  The RL01/RL02 device
driver was modified to perform the appropriate buffer moves most likely
to prove the customer option to adjust their drivers actually worked.  In
any case, boot support for RL01/RL02 disks does not exist.
2023-04-30 14:54:04 -10:00