$ show felixrieseberg/windows95
This repository is an Electron desktop application that boots a genuine Windows 95 installation inside the v86 x86 emulator. The main process coordinates window creation, menus, settings, and file serving, while the renderer runs the emulator and a React-based Windows 95-styled UI. The guest OS is fully functional, and the app provides integration features such as a host-folder SMB share, clipboard synchronization via the VMware backdoor protocol, guest TCP relay through the host network, and a custom DNS shim so the old OS can reach modern services. The architecture is a classic Electron main/renderer split. The main process handles lifecycle concerns: windows, menus, IPC, settings persistence, auto-update, and a small HTTP file server that delivers web content to the guest. The renderer is where most of the interesting work happens: it embeds v86, manages disk images and saved states, and hosts several reverse-engineered network subsystems, including a read-only SMB1/CIFS server, NetBIOS framing, NBNS responses, and a TCP relay. A guest agent (W95TOOLS.EXE) runs inside Windows 95 to synchronize the clock, map the SMB drive, and bridge the clipboard. The codebase is a mix of carefully engineered TypeScript modules and large vendored/minified emulator code. The custom protocol implementations are genuinely impressive and relatively self-contained, though they are tightly coupled to v86's bus architecture and Windows 95's quirks. Building and releasing the app depends on private disk-image artifacts, a patched v86 fork, and a custom guest toolchain, making full reproduction from source impractical for outsiders, but the app itself is stable and actively maintained. Overall, it is a strong example of combining an emulator project with a polished desktop UI and clever protocol engineering.
The LLM identified 5 files worth highlighting for reuse:
A dependency-free, read-only SMB1/CIFS server implementation focused on Windows 95 compatibility. It handles dialect negotiation, session setup, tree connects, file reads, directory enumeration, and RAP share enumeration. This is a rare, self-contained protocol implementation that can be extracted into other retro-computing or interoperability projects needing a minimal SMB server.
A read-only FAT32 filesystem walker that extracts files directly from raw disk sectors. It understands FAT32 clusters, directory entries, and long filename handling without mounting the filesystem. This is reusable for forensic analysis, disk-image tooling, or recovering files from legacy disk images.
A transparent TCP relay that bridges guest TCP connections to real host sockets. It listens on v86's tcp-connection bus and forwards data bidirectionally, enabling the Windows 95 guest to access the host network. This pattern is reusable in any emulator project that exposes a virtual network stack and needs host network integration.
An autonomous boot-probe harness for CI. When enabled, it drives the emulator with synthetic XT scancodes, samples VGA and CPU state, and writes a verdict JSON to disk. This allows unattended verification that Windows 95 boots and reaches a desktop, and the verdict classification logic (distinguishing cold-boot flakes from real disk-state corruption) is a reusable testing pattern for emulator-based projects.
A script that rebuilds the vendored v86 emulator from a maintained fork and runs five sanity checks to catch upstream drift early. It verifies critical symbols, expected imports, and build artifacts. This demonstrates a robust pattern for maintaining a long-lived upstream fork: automate the rebuild, codify invariants, and fail fast when they break.