SIMH
SIMH, also known as the Simulator for Historical Computers or the Computer History Simulation Project, is a free, open-source, multi-platform emulator that simulates a wide array of historically significant computer systems and their associated software from the mid-20th century onward.[1][2] Developed initially as a personal project to recreate vintage hardware behaviors, SIMH enables users to run original operating systems, applications, and peripherals on contemporary hardware, thereby preserving digital history and facilitating research into early computing.[3] Initiated in 1993 by Bob Supnik, a veteran engineer and former vice president at Digital Equipment Corporation (DEC), SIMH evolved from earlier simulation tools like MIMIC, which Supnik had worked on during his DEC tenure in the 1960s and 1970s.[3] What began as a solo effort to simulate DEC's PDP-11 minicomputer expanded through open collaboration, growing into a comprehensive framework under an MIT-style license that supports contributions from a global community of developers and enthusiasts. In 2022, due to community governance needs, the Open SIMH project was established as a fork to continue collaborative development.[4] By the mid-2000s, SIMH had become a cornerstone for computer history preservation, allowing accurate emulation of systems that would otherwise be inaccessible due to hardware obsolescence or rarity.[5] Key features of SIMH include high-fidelity modeling of CPU architectures, memory management, and I/O devices, often down to the instruction-set level, enabling the execution of unmodified legacy code such as early versions of Unix on simulated PDP-11 environments.[1] The project supports over 20 distinct simulators in its "Classic" 3.x branch, covering systems like the PDP-1, PDP-8, PDP-10, PDP-11, VAX, and Altair 8800, while the enhanced Open SIMH V4 stream, hosted on GitHub, extends this to additional platforms including IBM System/3, SDS 940, and HP 3000 series machines.[6] Ancillary tools for handling vintage file formats, cross-assemblers, and network protocols like Chaosnet further enhance its utility for historians, educators, and hobbyists seeking to explore or revive forgotten software ecosystems.[1] As of 2025, SIMH remains actively maintained through the Open SIMH project, with regular updates addressing bug fixes, performance optimizations, and new hardware emulations, ensuring its relevance in an era of ongoing interest in retrocomputing and software archaeology.[7] This enduring development underscores SIMH's role not only as a technical emulator but as a vital archive for understanding the foundational technologies that shaped modern computing.[8]Introduction
Definition and Purpose
SIMH, or Simulator for Historical Computers, is a free and open-source project consisting of a collection of multi-platform simulators designed to emulate historically significant computer hardware and software primarily from the mid-20th century, spanning the 1950s through the 1980s.[1][8] Developed initially as a personal endeavor, it provides a framework for recreating the functional behavior of vintage systems using modern host computers, allowing users to run original operating systems and applications without requiring rare or obsolete physical hardware.[5] The primary purpose of SIMH is to preserve computing history by enabling the execution and study of legacy software on contemporary platforms, thereby supporting research into early computer architectures, educational demonstrations of historical computing concepts, and recreational exploration by hobbyists.[9][5] This preservation effort addresses the challenges posed by the degradation or scarcity of original hardware, ensuring that significant artifacts of computing evolution remain accessible for analysis and appreciation.[8] Unlike general-purpose emulators that often prioritize high-level abstraction or performance optimization for gaming or broad compatibility, SIMH emphasizes accurate behavioral simulation of specific vintage architectures, modeling system responses at a "black box" level based on documented logic and microcode to faithfully reproduce original behaviors without delving into cycle-by-cycle timing precision.[9][5] Initiated by Bob Supnik, a former Digital Equipment Corporation engineer, in 1993, the project began with emulations of the DEC PDP-8 and PDP-11 to facilitate software preservation for these minicomputers.[5]Core Capabilities
SIMH demonstrates multi-platform portability through its implementation in standard ANSI C, enabling it to run on a wide array of host systems including Windows, Linux, macOS, FreeBSD, OpenBSD, Solaris, and various UNIX variants without requiring platform-specific modifications.[10] This cross-compatibility stems from the avoidance of non-portable code, allowing compilation and execution on diverse architectures such as x86, ARM, and others using common build tools like GCC or Visual Studio.[2] For instance, pre-built binaries are readily available for x86-based Linux, macOS, and Windows environments, facilitating easy deployment for simulating systems like the DEC PDP series.[11] The simulator achieves high fidelity by providing bit-level accurate emulation of CPU instructions, memory operations, and I/O peripherals, closely mirroring the original hardware's behavior down to individual bit manipulations and word lengths specific to each target machine.[12] This includes precise handling of interrupts through a priority-based scanning mechanism that evaluates up to 256 devices and flags asynchronous events correctly, as well as timing models that synchronize simulated clocks with host wall time for realistic event sequencing.[12] Such accuracy ensures that legacy software, including operating systems and applications, executes as it would on authentic hardware, preserving computational integrity without interpretive approximations.[1] SIMH's modular architecture promotes extensibility, permitting developers to integrate new peripherals, storage devices, or even entire computer systems by extending the C codebase with standardized interfaces for memory access, event queues, and device controllers.[12] Contributions follow a consistent structure, such as defining device descriptors and service routines, which integrate seamlessly into the core event-driven framework.[12] This design choice supports ongoing enhancements by the community, as seen in the addition of network protocols and specialized I/O simulations.[4] In terms of resource efficiency, SIMH imposes minimal overhead relative to full-system virtualization solutions, operating primarily through interpreted instruction execution that leverages the host CPU directly for arithmetic and control flow, making it viable on standard personal computers without dedicated hardware acceleration.[10] By default, it prioritizes speed over strict real-time constraints, consuming CPU cycles only as needed for simulation progress, and includes optional throttling to cap resource usage during prolonged runs.[10] This lightweight profile contrasts with heavier emulators by avoiding guest OS layers, thus enabling efficient preservation and analysis of historical computing environments on contemporary hardware.[9] SIMH is distributed under an MIT-style open-source license, which permits free redistribution, modification, and incorporation into derivative works while requiring only acknowledgment of the original authors.[1] This permissive licensing model has fostered widespread adoption and collaborative development across both the classic V3 and Open SIMH V4 code streams.[4]Historical Development
Origins and Early Work
SIMH, a project to simulate historical computer systems, was initiated in 1993 by Robert M. Supnik, a longtime engineer at Digital Equipment Corporation (DEC) who had joined the company in 1977 and contributed to key PDP-11 and VAX microprocessor implementations.[13] The effort began at the suggestion of Larry Stewart, a DEC colleague, with the goal of preserving records of early minicomputer hardware and software amid growing scarcity of functional vintage equipment.[14] By the mid-1990s, Supnik had risen to vice president of research and advanced development at DEC, but the simulator project represented a personal commitment to safeguarding computational heritage as original hardware from the PDP-11 era—production of which ceased in the early 1990s—became increasingly rare and unreliable.[13] The inaugural component of SIMH was a portable instruction-level simulator for the PDP-11 minicomputer, implemented in the C programming language to ensure broad compatibility across 32-bit host systems such as VAX/VMS, Alpha OpenVMS, Digital UNIX, and Linux.[13] This early focus stemmed directly from Supnik's professional experience with PDP-11 systems and the urgent need to maintain access to associated software, including real-time operating systems like RSX-11M Version 4 and early Unix variants such as Versions 5 through 7, as well as Berkeley Software Distribution (BSD) 2.9.[13] Unlike DEC's proprietary diagnostic and emulation tools, which were tied to specific hardware and not widely portable, the PDP-11 simulator emphasized cross-platform usability to enable hobbyists and researchers to execute legacy code without depending on aging physical machines.[13] Initial distribution of the simulator occurred through informal channels like FTP sites and direct email exchanges, reflecting the constrained internet infrastructure of the era and a deliberate choice to share it as freeware for non-commercial use.[13] Supnik, drawing from his DEC background in commercial product development, pivoted toward a hobbyist-oriented preservation model, coordinating enhancements and bug fixes via enthusiast communities rather than formal corporate support.[13] Pre-2000 dissemination relied heavily on academic networks and dedicated groups, such as the PDP UNIX Preservation Society, which hosted archives of bootable disk images and documentation accessible via FTP servers like minnie.cs.adfa.oz.au.[13] These methods addressed the challenges of limited bandwidth and connectivity, fostering a grassroots effort to sustain PDP-11 software ecosystems before broader web-based sharing became feasible.[13]Key Milestones and Versions
In the early 2000s, SIMH underwent significant expansion with the addition of simulators for the VAX, PDP-10, and IBM 1130 systems, broadening its scope to include more complex minicomputer architectures.[1] Version 2.0, released in 2001, introduced a unified framework that standardized the simulator's architecture, facilitating easier development and portability across host systems.[1] The version 3.x series, spanning from 2005 to 2024 and maintained by Bob Supnik, focused on refining core functionality and integrating modern peripherals. Key enhancements included support for Ethernet via libpcap and VDE, SCSI, and IDE interfaces, enabling more accurate emulation of networked and storage-heavy historical environments.[1][15] The final release in this series, V3.12-5 in July 2024, addressed critical bugs in the PDP-11 emulator, improving stability for disk and tape operations.[1] Beginning in late 2014, SIMH transitioned to an open source development model on GitHub under the repository simh/simh, marking the shift to version 4.x with Mark Pizzolato assuming lead maintenance responsibilities.[16] In May 2022, a controversial license change added a clause restricting commercial use of disk images created by the simulator, prompting the community to fork the project as the Open SIMH project under the original MIT license.[17] This era emphasized collaborative contributions, culminating in V4.0-19-01 in early 2025, which incorporated asynchronous I/O capabilities to enhance performance on multi-core hosts.[2] Throughout the 2020s, updates addressed growing concerns over hardware obsolescence, particularly accelerated by post-COVID supply chain disruptions, by integrating features like Chaosnet support for PDP-10 and PDP-11 systems and video display APIs for graphical terminals.[1] These developments ensured SIMH's relevance for preserving and studying legacy software ecosystems. Community-driven forks, such as those providing enhanced Windows binaries, emerged in parallel to extend platform-specific optimizations without altering the core codebase.Technical Architecture
Emulation Techniques
SIMH employs an event-driven simulation approach to model the asynchronous behavior of historical computer systems, utilizing a discrete event queue managed by the Simulator Control Package (SCP) to handle timing for interrupts, I/O operations, and CPU cycles. This method avoids real-time synchronization constraints by allowing the simulator to advance time in discrete steps, where the CPU decrements a counter (sim_interval) until it reaches zero, at which point it processes pending events via sim_process_event. Devices schedule their operations using sim_activate, calculating wait times based on emulated hardware characteristics, such as 3.3 milliseconds for paper tape reader input at 300 characters per second, enabling accurate replication of system timing without locking to the host's clock speed.[12]
Peripheral devices in SIMH are modeled as state machines within sim_device structures, which include registers, units, and flags to manage attachment and detachment, such as UNIT_ATTABLE for units that can be connected to host files or devices. Each unit is represented by a sim_unit structure that triggers action routines on timeouts, supporting both fixed- and variable-capacity storage with host I/O abstracted through endian-independent functions like sim_fread and sim_fwrite. Timing for these devices is coordinated via an active queue, where operations can be canceled or rescheduled with routines like sim_cancel, ensuring that emulated peripherals behave as self-contained entities that interact with the CPU through standardized interfaces. For instance, disk and terminal emulations maintain internal states for data transfer and error conditions, facilitating modular simulation of complex I/O hierarchies.[12]
The CPU in SIMH is interpreted through a fetch-execute cycle implemented in the sim_instr routine, which decodes instructions fetched from the program counter (sim_PC) using switch statements or dispatch tables for efficiency and clarity. This approach supports accurate cycle counting by integrating instruction timings into the event queue via sim_interval, with examples including the PDP-11's 16-bit operations where each instruction's execution cost is tabulated to match original hardware performance. Interrupt handling is optimized to minimize overhead during the fetch phase, employing bit flags like int_requests or priority masks to queue and process interruptions without disrupting the main simulation loop. Optional step-by-step execution is enabled through sim_cancel_step, allowing precise control over instruction progression for verification purposes.[12]
Memory management in SIMH simulates RAM as an array sized according to the target system's word length, such as 16-bit words for the PDP-11 or 32-bit for the VAX, with access routines providing byte- or word-level granularity to emulate both byte-addressable and word-addressable architectures. For systems requiring it, like the VAX, memory banking is supported to handle segmented address spaces, while dynamic resizing is managed via the msize routine to adjust allocation during simulation startup or configuration changes. Data persistence across sessions uses efficient serialization with an increment value (aincr), such as 2 for PDP-11 words, ensuring compatibility with the host's memory model while preserving the emulated system's addressing constraints.[12]
Built-in debugging tools in SIMH facilitate instruction-level analysis, including the EXAMINE and DEPOSIT commands that invoke device-specific routines to read or modify up to sim_emax words of memory or registers, providing a non-intrusive way to inspect simulator state. Tracing capabilities are enabled through SET DEBUG commands, which activate flags in a dctrl structure and a debflags table to log events across multiple output channels, supporting detailed profiling of CPU execution and device interactions. Breakpoint support via sim_brk_test allows up to 26 types (labeled A-Z), with summaries tracked for conditional halting, enabling developers to debug emulated software as if interacting with the original hardware. These tools integrate seamlessly with the event-driven framework, pausing simulation only when debug conditions are met.[12]
Host System Integration
SIMH interfaces with host systems primarily through file-based I/O mapping and network protocols to emulate peripheral devices. Disk and tape devices are mapped to host files or directories, using formats such as .dsk for floppy images, SIMH disk format for structured storage, or raw binary files for tapes, allowing seamless access to modern storage without physical hardware.[2] For console and terminal interactions, SIMH employs TCP/IP over Telnet, where commands likeSET CONSOLE [TELNET](/page/Telnet)=<port> or ATTACH <unit> <port> bind simulated serial ports to host network sockets, enabling remote access from tools like PuTTY or telnet clients on ports ranging from 1 to 65535.[18]
The simulator's portability is achieved through an ANSI C codebase with conditional compilation directives to handle OS-specific features. Core modules like sim_sock.c abstract socket operations, supporting differences between Unix-like systems (using libpcap for packet capture) and Windows (using WinPcap or Npcap). This layer ensures compatibility across platforms including Linux, macOS (including Apple Silicon), Windows, OpenVMS, various Unix variants like AIX and Solaris, Android Termux, and BSD systems, without requiring host-specific recompilation for basic functionality.[10][2] Build processes leverage Makefiles for Unix environments and Visual Studio projects for Windows, with CMake support added in later versions for cross-platform compilation.[2]
Performance integration emphasizes efficient host resource utilization while maintaining simulation accuracy. In SIMH V4, asynchronous I/O is implemented for devices like disks and tapes, enabling non-blocking operations that prevent the event queue from stalling during data transfers, as seen in PDP-11 and VAX simulators. Multi-threading is deliberately limited to a single-threaded model to avoid synchronization complexity in the synchronous instruction execution loop, relying instead on polling for events. Binary distributions are provided pre-built for major platforms, such as Windows executables from the project's GitHub repository, alongside source distributions with build scripts to facilitate compilation on 64-bit hosts.[2][18]
Limitations in host integration stem from the simulator's CPU-centric design, with no support for GPU acceleration, making high-end emulations like VAX CPU-bound and dependent on host processor speed. Post-2010 recommendations emphasize 64-bit hosts for adequate performance, as 32-bit systems struggle with memory-intensive simulations requiring 64-bit integers for accurate emulation of systems like the PDP-10.[19]
Emulated Hardware
Digital Equipment Corporation Systems
SIMH provides highly accurate emulation of Digital Equipment Corporation (DEC) hardware, particularly its minicomputers and mainframes that played a pivotal role in early computing history. These simulations enable the execution of original operating systems and software on modern hosts, preserving the functionality of systems like the PDP series and VAX architectures. The emulations incorporate detailed modeling of processors, memory systems, buses, and peripherals to achieve cycle-accurate behavior where possible, using event-driven timing for efficient simulation.[10] The PDP-8 family emulation centers on the 12-bit architecture that defined DEC's entry into minicomputing. SIMH simulates key models such as the PDP-8/I and LINC-8, replicating core memory configurations from 4K to 32K words and Teletype interfaces like the KL8E for console input/output. These models support boot ROMs in RIM and binary formats, allowing direct loading of operating systems such as OS/8. Peripherals including paper tape readers/punches, DECtapes, and magnetic tapes are emulated to facilitate original software environments.[20] For the PDP-11 series, SIMH emulates the 16-bit architecture across a range of models, including the KA/11 processor in configurations like the 11/20, 11/40, and 11/70. It supports both Q-BUS and Unibus variants, with DMA capabilities for 18-bit or 22-bit addressing depending on the system. Key peripherals include RK05 disk drives via the RK11 controller and DL11 serial terminals for console and multi-user access. Vector instructions and boot ROMs are faithfully reproduced, enabling accurate execution of RT-11 and early VMS versions, with idle detection to optimize simulation performance.[21] SIMH's VAX emulation targets 32-bit virtual machines, simulating models such as the MicroVAX 3900 and VS2000, with emulator-extended memory support up to 512 MB (original MicroVAX 3900 hardware limited to 64 MB). It includes Q-BUS support through adapters like the QBA, along with floating-point units (FPU and FPA) for precise arithmetic operations. Boot ROMs, typically 128 KB in size, handle initialization and device booting, while vector instructions are supported with assembler-compatible syntax. This setup allows reliable operation of VMS, including extended memory configurations and interrupt handling.[22] The PDP-10 emulation recreates the 36-bit mainframe architecture of DEC's time-sharing systems, focusing on KL10 and KS10 processor models with up to 1 MW of memory. Chaosnet interfaces via DEUNA/DELUA controllers enable ARPANET-like networking simulations. Boot ROMs support loading from disks (RP06) and tapes (TU), with high fidelity for TOPS-10, including user-mode idle loops and device interrupts. Unique features like extended instruction sets (EIS) and page mapping ensure compatibility with historical software stacks.[23]IBM Systems
SIMH emulates the IBM System/360 and System/370 mainframe families, which introduced a unified architecture with 8-bit byte-addressable memory and support for 16-bit and 32-bit data formats. These simulators replicate the byte-multiplexor and selector channel I/O architecture central to IBM mainframes, enabling high-speed data transfer to peripherals such as the 729 Model V magnetic tape drives and 2311 direct-access storage devices. The emulations achieve sufficient accuracy to execute Basic Assembly Language (BAL) programs and operate key operating systems, including OS/360 for multiprogramming with a fixed number of tasks (MFT), OS/360 MVT for multiprogramming with a variable number of tasks, and DOS/360 for disk-oriented batch processing.[24] Preceding the System/360, SIMH supports emulation of influential IBM systems like the 1401 commercial computer and the 7090 scientific computer, which influenced System/360 design through compatibility modes for their instruction sets and peripherals. The 1401 simulator models core memory configurations up to 16K characters, along with the 1402 card reader/punch and 1403 printer, allowing execution of Autocoder programs and tape-based data processing. Similarly, the 7090/7094 emulator handles large-scale core memory and Fortran assembly, supporting IBSYS operating system and high-speed peripherals like the 729 tapes. These precursor emulations facilitate preservation of early commercial and scientific software environments.[25][26] The IBM 1130 simulator in SIMH targets the 16-bit word-addressable scientific minicomputer introduced in 1965, emulating up to 32K words of core memory along with integrated peripherals such as the 1132 printer, console typewriter, and 1442 card reader/punch. It includes support for up to eight 2316 disk drives and an internal fixed disk in the 1131 CPU, enabling execution of the Disk Monitor System (DMS) versions like R2 V12, which incorporates the Macro Assembler and Fortran IV compiler. A notable feature is the 1130's compatibility mode for emulating the earlier IBM 1620, allowing legacy programs to run without modification while supporting card-based input/output operations.[27][28]Control Data Corporation Systems
The SIMH project includes an emulator for the Control Data Corporation (CDC) 1700 series, a family of 16-bit minicomputers introduced in 1966 designed for industrial control, data acquisition, and scientific applications.[29] The emulator, developed by John Forecast and integrated into SIMH starting in 2016, faithfully reproduces the architecture of models such as the 1714 CPU, which features a 1.25 MHz clock, up to 32K words (expandable to 64K) of core memory, memory protection, and a direct storage access bus for peripherals.[30] It supports multi-level interrupts via the 1705 controller, enabling efficient handling of I/O operations in real-time environments.[31] Key peripherals emulated include the 1711-A teletypewriter for console I/O, paper tape devices such as the 1721-A reader and 1723-A punch for program loading and output, and high-speed variants like the 1725 reader added in later releases.[31] Disk storage is handled through the 1738-B controller supporting up to two 853 or 854 pack drives (1.5–3.0 MW capacity) and the 1733-2 controller for up to four 856 cartridge disks (1.13–2.25 MW per disk).[30] Magnetic tape support via the 1732-A/1732-3 controller accommodates up to four transports, while line printers like the 1740, 1742-30, and 1777 models, along with card readers (1752) and punches (1764), facilitate batch processing.[31] The 6400 console and 1782 magtape controller were incorporated in release 2 of the emulator in 2019, enhancing compatibility with original hardware configurations.[31] The emulator boots and runs CDC's MSOS 5 operating system, a multiprogramming system for 64K configurations distributed by Exxon, allowing execution of production workloads including background task scheduling.[30] Support for the 6400 operating system was added in 2019, enabling simulation of earlier software environments.[31] It accurately executes 1960s-era diagnostics, with most tests passing, though some failures occur due to timing nuances or incomplete peripheral modeling based on available documentation.[30] The simulator preserves the 1700 series' focus on I/O offload through dedicated controllers, providing timing fidelity suitable for emulating supercomputer-era workloads in a minicomputer context, and supports running FORTRAN compilers and scientific simulations from the period via MSOS environments.[32]Data General Systems
SIMH provides emulation for Data General's Nova series of 16-bit minicomputers, encompassing models 1 through 4, which were among the earliest commercially successful minicomputers introduced in the late 1960s and early 1970s.[1][33] The simulator replicates the core architecture, including the ECLIPSE CPU instruction set for later models like the Nova 3 and 4, enabling execution of original software on modern host systems such as Windows and Linux.[10] Key emulated peripherals include hard disks, fixed disks, magnetic tape drives in formats like SIMH, E11, TPC, and P7B, as well as CRT terminals with support for a second terminal via the sim_tmxr multiplexer and an interval clock.[10] The Eclipse series extends SIMH's support to Data General's more advanced 16-bit systems, including the C/200 model and the higher-end MV/8000, which featured enhanced memory management and processing capabilities.[2] Emulation covers the microprogrammed ECLIPSE CPU, complete with floating-point operations and interval timer functionality added in SIMH revision 3.1, along with interrupt priority handling integral to the original hardware design.[10][33] The compass bus is faithfully reproduced to facilitate device interconnects, while storage options include RD51-compatible disk drives and magnetic tape units for data transfer and archival.[33] Operating system support in the Data General emulators emphasizes multi-user and real-time environments, such as AOS/VS for Eclipse systems, which enables concurrent user sessions via emulated CRT terminals.[33] Earlier systems run MPX and RDOS, including variants like RDOS/INFOS and DG/RDOS, with boot procedures demonstrated for disk-based startups on both Nova and Eclipse configurations.[33] These emulations achieve high fidelity, successfully executing 1970s-era business applications, diagnostics, and development tools in languages like assembler, BASIC, and FORTRAN under RDOS, as verified through sample program testing and hand-generated cases.[10][34]Honeywell Systems
SIMH provides emulation for Honeywell's Series 16 minicomputers, including the H316 and H516 models, which are 16-bit accumulator-based systems originally developed as the DDP-516 and DDP-516 by Computer Control Corporation before Honeywell's 1966 acquisition.[35] The simulator accurately reproduces the instruction set, featuring 46 unique "Generic A" opcodes executed in 4- or 6-phase cycles via hardwired decode logic, enabling faithful reproduction of core processing behaviors.[35] These emulations support peripherals such as card readers for the associated 18-bit architectures, facilitating data input in simulated environments typical of early 1960s business and scientific computing.[36] The H516 model, in particular, allows simulation of real-time networking applications, including the original ARPANET Interface Message Processor (IMP), highlighting Honeywell's role in early packet-switched networks.[35] For larger Honeywell systems, the SIMH framework underpins the DPS8M emulator, which simulates the 36-bit DPS 8/M series (successor to the H6000), supporting the General Comprehensive Operating System (GCOS) for batch and time-sharing workloads, as well as Multics influences from its GE-645 origins.[37][38] This extends SIMH's coverage to variable word sizes of 16 to 36 bits across Honeywell's lineup, enabling emulation of accounting software and early real-time process control simulations on industrial hardware.[38]Other Commercial Systems
SIMH provides emulation for a variety of commercial computer systems from vendors beyond the primary categories, enabling the preservation and study of diverse minicomputer architectures from the 1960s through the 1980s. These emulators focus on key hardware features such as proprietary buses, specialized I/O, and operating environments tailored to business and scientific applications.[1][6] The AT&T 3B2 emulator supports the 3B2/400 and 3B2/700 models, which were 32-bit Unix workstations based on the Motorola 68010 processor. These simulations replicate up to 4 MB of RAM, SCSI disk controllers, and Ethernet interfaces, allowing execution of AT&T UNIX System V Release 3, with integrations for telecommunications hardware like the WE32200 processor family used in switching systems.[2][6] Hewlett-Packard's commercial systems are emulated through dedicated simulators for the HP 3000 and 2100 series. The HP 3000 emulator covers 16-bit minicomputers such as the Series III, supporting the Multi-Programming Executive (MPE) operating system, tape drives, and the slotted chassis architecture for modular I/O expansion. Similarly, the HP 2100 series emulator handles models like the 2116 and 1000 M/E/F-Series, including options for floating-point units, memory protection, and direct memory access (DMA) controllers, facilitating real-time executive (RTE) environments in business computing.[39][40] The Burroughs B5500 emulator recreates the 48-bit medium-scale system with its stack-based architecture optimized for ALGOL programming and the Master Control Program (MCP) operating system. It simulates core memory up to 256K words, magnetic drum storage, and word-mark addressing, emphasizing the system's influence on tagged architecture designs for data integrity in commercial data processing.[6][24] For Scientific Data Systems (SDS, later Xerox Data Systems), SIMH emulates the Sigma 5, 6, and 7 series, which are 32-bit mainframes supporting multiprogramming under the CP-V operating system. The Sigma 7 simulation includes the 32-bit central processor, core memory configurations up to 128K words, and peripherals like the Cambridge ring network interface, with enhancements for the SDS 940 variant's virtual memory support.[2][6] Norsk Data systems receive preliminary emulation support in SIMH for the ND-100 series, 16/32-bit minicomputers running the REALITAS operating system. These simulations cover the ND-100's 16-bit CPU with 32-bit extensions, vector processing units, and Ethernet connectivity, reflecting their use in European scientific and industrial applications.[41] Interdata emulators in SIMH target the 16/32-bit minicomputer family, including the 4/32 and 8/32 models, which share architectural influences from the IBM System/360. These support up to 512K words of memory, channel-based I/O, and the OS/32 operating system, with compatibility for early UNIX ports on non-PDP architectures.[42][6]Hobbyist and Research Systems
SIMH provides emulation for several hobbyist-oriented systems that were pivotal in the early personal computing era, enabling users to experience the foundational hardware of home computing without physical restoration. The MITS Altair 8800, introduced in 1975 as one of the first commercially successful microcomputers, is emulated with support for the Intel 8080 CPU, S-100 bus expansion, and up to 64 KB of memory.[43] This simulator accurately replicates the system's front panel switches and lights for direct machine operation, allowing booting of Microsoft BASIC and CP/M operating systems from emulated 8-inch floppy disks or paper tape. Similarly, the Southwest Technical Products Corporation (SWTPC) 6800 emulator supports the Motorola 6800 microprocessor-based kits from the late 1970s, including the SWTPc 6800 and 6809 variants with flex disk controllers for single-sided, single-density floppies. These features facilitate running period-specific software like SDOS and FLEX9, preserving the low-cost, kit-built nature of these machines that appealed to electronics enthusiasts.[44] In the realm of research and experimental systems, SIMH emulates hardware that advanced early computing concepts, often developed in academic or laboratory settings. The Lincoln Laboratory TX-0, a 1956 transistor-based computer that influenced the design of the PDP-1, is simulated with its 16-bit architecture, 8K-word core memory, and Type 401 CRT display support for graphical experiments.[6] This emulation enables exploration of the TX-0's role in pioneering interactive computing and early timesharing precursors, such as those leading to the Compatible Time-Sharing System (CTSS). The BESM-6, a Soviet mainframe from 1967 known for its high-speed arithmetic and magnetic drum storage, is also supported, modeling its 48-bit word length, up to 256K words of ferrite core memory, and peripherals like punched tape readers for running original assembly and Fortran programs. Implemented by contributors Leonid Broukhis and Serge Vakulenko, this simulator highlights the BESM-6's contributions to scientific computing in non-Western contexts.[2] Educational and low-end minicomputers round out SIMH's coverage of accessible hardware, emphasizing simplicity for teaching and experimentation. The Royal-McBee LGP-30, a 1956 drum-based system marketed as an affordable desktop computer, is emulated with its 4,096-word magnetic drum memory, Friden Flexowriter console, and optional high-speed paper tape I/O.[45] This allows simulation of its interpretive programming model, ideal for introductory assembly language instruction using vacuum tube-era logic. The GRI-909, a 1969 16-bit minicomputer from General Research and Instrument Corporation, supports up to 32K words of core memory and paper tape peripherals, targeting embedded control and educational use with its straightforward instruction set.[46] Unique to these emulations is the focus on minimalist I/O interfaces, such as toggle switches, indicator lamps, and teleprinter consoles, which provide hands-on insight into machine-level programming and hardware-software interaction for modern learners.[47] As of 2025, SIMH continues to receive updates for bug fixes and optimizations in existing emulations, with no major new hardware simulators added recently.[2]Usage and Extensions
Running Simulations
SIMH simulations are initiated by first obtaining the emulator software, which can be downloaded as precompiled binaries for various host platforms from the official distribution site or built from source code available on GitHub.[10] For building from source, users unpack the archive, define simulator-specific compilation flags such asVM_PDP11 for the PDP-11 simulator, and compile using tools like gmake on Unix-like systems or Visual C++ on Windows, potentially linking libraries like libpcap for network support.[10] Configuration occurs via an initialization file named <simulator>.ini, which contains non-interactive commands for setting up devices, or directly through the command-line interface.[10]
Basic operations begin with attaching virtual devices to host files or ports using the ATTACH command, such as ATTACH DS0 os.disk to connect a disk unit to a disk image file.[10] The BOOT command then resets the simulated machine and loads a bootstrap from the specified unit, for example, BOOT DS for booting from disk unit 0.[10] Execution starts with RUN, which resets devices, sets the program counter, and begins CPU operation, or alternatively LOAD boot; GO to load a boot loader and commence running.[10] Automation of command sequences is handled by the DO command, which executes scripts from files and supports arguments via placeholders like %1, allowing nested execution up to 10 levels deep.[10]
Console access for interacting with the simulated system supports remote connections via Telnet, enabled by SET CONSOLE TELNET=<port>, such as SET CONSOLE TELNET=2323 to listen on port 2323.[10] Simulation speed is controlled with SET THROTTLE options, including SET THROTTLE 1M for approximately 1 MIPS, SET THROTTLE 50% to use 50% of host CPU time, or SET NOTHROTTLE to run at full host speed.[10]
Troubleshooting common issues involves checking the configuration with SHOW CONFIG to identify device conflicts, which can be resolved by disabling units via SET <unit> DISABLED.[10] Logging for diagnostics is activated using SET DEBUG flags, such as SET CONSOLE DEBUG=debug.log to output console events to a file or SET <device> DEBUG for device-specific traces, with SET NODEBUG to disable.[10]
A practical example for booting the PDP-11 simulator with RT-11 involves attaching the disk image (ATTACH DS0 rt11.dsk), booting from it (BOOT DS), and then loading and starting the boot loader (LOAD boot; GO), which initializes the RT-11 environment.[10]