#Hardware

S‑100 Virtual Workbench brings classic 8‑bit S‑100 systems to the browser

AI & ML Reporter
4 min read

The new S‑100 Virtual Workbench emulates a full S‑100 bus with interchangeable 8080, Z80, RAM, ROM, and peripheral cards, letting users run historic CP/M software and demos directly in a web page. While the interface is polished and the card library extensive, the emulator still relies on JavaScript timing, lacks accurate cycle‑level hardware behavior, and cannot replace hardware‑level debugging or timing‑critical applications.


What the project claims

The S‑100 Virtual Workbench (VWB) advertises itself as a browser‑based, drag‑and‑drop environment for recreating classic S‑100 computers such as the Altair 8800, IMSAI 8080, and SOL‑20. The site lists a catalogue of emulated cards – Intel 8080/8080A, Zilog Z80, RAM, ROM, various serial and floppy controllers, and even graphics cards like the Cromemco Dazzler and Processor Technology VDM‑1. Users can assemble a configuration, load a CP/M 2.2 disk image, and interact with the system via an on‑screen terminal. The UI includes a bus analyzer view that shows address, data, and control signals in real time.


What’s actually new

Feature Prior art What VWB adds
Full S‑100 bus model Earlier JavaScript demos (e.g., Altair.js, SIMH compiled to WebAssembly) emulated a single board, usually an Altair with a fixed CPU. VWB treats each card as a separate module that can be placed on a virtual backplane, mirroring the real‑world plug‑in nature of the S‑100 bus.
Drag‑and‑drop card selection Most web‑based emulators required editing a config file or hard‑coding the board layout. The UI lets you click a slot, pick a card from a library, and instantly see it appear on the bus.
Integrated bus tracer SIMH’s monitor commands can dump bus activity, but they are text‑only and require manual scripting. VWB shows a live, graphical trace of MEMR/MEMW/IOR/IOW lines with address and data columns, useful for teaching bus protocols.
Support for obscure peripherals The DCDD hard‑sector floppy controller and the 2SIO dual‑serial card have rarely been emulated outside of full‑system simulators. VWB includes faithful register maps for these cards and ships disk images compatible with the original MITS format.
Graphics cards The Dazzler and VDM‑1 have been simulated in hobbyist projects, but not together with a full S‑100 bus in a web UI. VWB renders the Dazzler’s composite video into a canvas element and provides a text‑mode VDM‑1 display that scrolls via the emulated I/O port.

In practice, the emulator runs entirely in the browser using JavaScript (with some WebAssembly for performance‑critical parts). The CPU cores are derived from the open‑source z80ex and 8080 projects, compiled to WebAssembly and wrapped in a JavaScript bus layer. Card firmware – for example, the ROM images for CP/M 2.2 – is bundled as binary blobs that can be swapped out via the UI.


Limitations and practical concerns

  1. Timing accuracy – The original S‑100 machines operated with clock rates between 2 MHz and 4 MHz, and many peripheral cards relied on precise cycle timing (e.g., the DCDD’s sector‑mark detection). VWB’s JavaScript event loop cannot guarantee sub‑microsecond granularity, so timing‑sensitive software (disk‑copy utilities, certain BIOS routines) may behave unpredictably.
  2. No hardware interrupts beyond CPU‑level – The emulator implements the standard INT and RST lines for the 8080/Z80, but bus arbitration signals like HOLD/HLDA are only simulated at a logical level. Projects that used the bus for custom DMA will not see realistic contention.
  3. Disk image format constraints – While the UI accepts raw binary images, it does not yet support the myriad CP/M disk formats (e.g., different sector sizes, skew tables) without manual conversion. Users must prepare images with tools like cpmtools.
  4. Limited peripheral diversity – The current library omits some historically important cards such as the S‑100 DMA controller, the 8085 bus controller, and many third‑party memory expanders. Adding them would require writing new JavaScript adapters and mapping their control registers.
  5. Browser resource usage – Running a full 64 KB RAM system with graphics and a floppy controller can push CPU usage to 30‑40 % on a typical laptop, leading to noticeable lag in the terminal output.
  6. No support for external hardware – The emulator cannot interface with real serial ports or USB floppy drives, which limits its usefulness for developers who want to connect legacy hardware to a modern host.

Who might find it useful?

  • Educators teaching computer architecture can demonstrate the modular nature of the S‑100 bus without purchasing vintage hardware.
  • Retro‑computing hobbyists looking for a quick way to test CP/M software or to prototype a card design before building a PCB.
  • Researchers interested in the evolution of bus protocols can use the bus analyzer to visualize signal interactions.

For anyone needing cycle‑accurate timing, hardware‑level debugging, or integration with physical devices, a native emulator like SIMH (https://github.com/simh/simh) or a FPGA recreation remains the better choice.


Bottom line

The S‑100 Virtual Workbench is a solid step forward in making the early micro‑computer ecosystem accessible from a web browser. Its modular card system and live bus view are genuinely new for a client‑side emulator, and the inclusion of rare peripherals adds depth. However, the implementation’s reliance on JavaScript timing and the current lack of many peripheral cards mean it should be viewed as an educational sandbox rather than a production‑grade replacement for hardware or full‑system simulators.

Comments

Loading comments...