morphx666/x8086NetEmu
43.6
Weak · 21 September 2026
19.6k
lines of production code
VB.NET
primary language
4
measurements over time
What this system is
x8086NetEmu is a cross-platform x86/8086 emulator that provides hardware simulation for audio, video, disk, and input devices. It supports running and debugging 8086 and 8088 processor tests, with a modular architecture that separates rendering, hardware adapters, and core emulation logic. The system includes a WinForms UI for interaction and a console entry point, enabling users to load disk images, manage hardware configurations, and execute test suites for validation.
How it got here
2016 — Cross-platform hardware abstraction and UI
20 changes.
This period focused on expanding the emulator's hardware abstraction layer to support cross-platform compatibility and a broader range of peripherals, including floppy disks, video adapters, and serial mice. The team also established a comprehensive WinForms interface for emulation control and debugging, while refactoring the codebase to target .NET Framework 4.8.1.
2017–2024 — Emulator feature expansion and testing infrastructure
10 changes.
This period focused on expanding the x8086NetEmu emulator with new hardware support for disk and audio subsystems, alongside the introduction of platform-independent rendering backends. Concurrently, the project established robust testing frameworks for both 8086 and 8088 processor instructions to validate emulator correctness.
Features
Add serial mouse adapter for COM1
The emulator now supports a serial mouse connected to COM1. This new adapter translates host mouse movements and button states into serial data packets, allowing the emulated system to receive mouse input via the standard serial port interface.
x8086NetEmu/Adapters/Serial · high confidence
Added 8086 test runner with command-line support
A new test runner application (ModuleMain.vb) was added to the RunTests project, enabling the execution of 8086 test suites (specifically Mike Chambers' test suite) by loading .bin files and comparing CPU state against expected results. The application supports command-line arguments (-d/--debug and -t/--trace-delay) to control debug mode and trace delay, and targets .NET Framework 4.8.1 as specified in the new App.config.
RunTests · high confidence
Added AdLib, Sound Blaster, and PC Speaker audio adapters with a new AudioSubsystem
The emulator now includes new audio adapter implementations for the AdLib, Sound Blaster, and PC Speaker, all managed by a new AudioSubsystem that handles sample generation and output. This change introduces support for FM synthesis (AdLib), 8-bit/16-bit PCM playback (Sound Blaster), and basic PC speaker tone generation, allowing users to experience retro audio in the emulation environment.
x8086NetEmu/Adapters/Audio · high confidence
Added CGA and VGA video adapter implementations
The emulator now includes new CGA and VGA video adapter implementations (CGAAdapter.vb, VGAAdapter.vb) along with a shared VideoAdapter base class. These changes introduce support for CGA and VGA video modes, including text and graphics rendering, palette management, and timing controls. A status document (VGA Emulation Status.md) is also added to track compatibility with various software.
x8086NetEmu/Adapters/Video · high confidence
Added INT13 disk emulation hook
Introduced a new INT13 hook in x8086NetEmu/Helpers/Hooks/INT13.vb to handle x86 BIOS disk services. This enables the emulator to process standard disk operations such as reading, writing, and verifying sectors, as well as formatting tracks and resetting drives, by mapping these calls to the internal floppy controller and disk image interfaces.
x8086NetEmu/Helpers/Hooks · high confidence
Added My Project metadata and settings files to the RunTests test application
The RunTests application now includes the standard Visual Studio My Project folder structure, containing Application.Designer.vb, Application.myapp, AssemblyInfo.vb, Resources.Designer.vb, Resources.resx, Settings.Designer.vb, and Settings.settings. These files configure the application's metadata (title, version 2024.4.5.1883), enable visual styles, and provide a strongly-typed settings class that automatically saves application settings on shutdown.
RunTests/My Project · high confidence
Added RunTests2 test runner for 8088 processor tests
A new test runner project (RunTests2) has been added to execute the 8088 processor test suite. The project includes a C\# implementation that loads, decompresses, and runs CPU tests from the '8088\_ProcessorTests' directory, comparing emulator state against expected results. It also includes configuration and model classes for the test data. This enables users to validate the emulator's correctness against a comprehensive set of processor instructions.
RunTests2 · high confidence
Added Visual Basic application metadata and configuration files
The project now includes the standard Visual Basic application metadata files, including Application.Designer.vb, Application.myapp, AssemblyInfo.vb, Resources.Designer.vb, Resources.resx, Settings.Designer.vb, and Settings.settings. These files define the application's identity, versioning, resource management, and settings persistence for the GenOpCodes emulator.
GenOpCodes/My Project · high confidence
Added Windows Forms project configuration and resources
The WinForms application now includes the standard My Project folder structure, containing auto-generated configuration files (Application.Designer.vb, Settings.Designer.vb, Resources.Designer.vb) and their corresponding XML/ResX data sources. This establishes the application's entry point (FormEmulator), enables single-instance execution with visual styles, and provides strongly-typed access to embedded resources like icons and cursors.
x8086NetEmuWinForms/My Project · high confidence
Added disk image management controls for floppy and hard drives
Users can now load, mount, and eject disk images (such as .ima, .img, .vfd, and .flp files) for both floppy and hard drives. The new DiskImgCtrl and FloppyImgCtrl controls provide a consistent interface to select images, toggle read-only mode, and view or modify disk volumes, with proper handling for missing images and UI updates.
x8086NetEmuWinForms/Controls · high confidence
Added file drag-and-drop and UI helper utilities
The application now includes new helper classes to support file operations and UI rendering. DataObjectEx enables drag-and-drop functionality by managing file descriptors and contents for clipboard and drag-and-drop operations. ListViewHelper provides utilities to manage ListView extended styles, including enabling double-buffering to reduce flicker. Win32FileIcon wraps the Windows Shell API to retrieve system icons for files and directories. These changes support the broader goal of making the emulator's rendering and interaction more modular and platform-independent.
x8086NetEmuWinForms/Tools/Helpers · high confidence
Added floppy disk controller and image support
The emulator now supports reading and writing to floppy disk images. This change introduces the FloppyControllerAdapter and DiskImage classes, which handle the emulation of the 8272/8273 floppy disk controller, including command execution, DMA/PIO transfer timing, and geometry detection for various floppy formats (e.g., 360K, 720K, 1.44M). Users can now mount and interact with floppy disk images in the emulator.
x8086NetEmu/Adapters/Disk · high confidence
Added keyboard adapter and key mapping for input handling
Introduced a new keyboard adapter component that translates host key events into scan codes for the emulated CPU. This includes a KeyMap class that defines the mapping between .NET Keys and PC scan codes, and a KeyboardAdapter class that implements the IExternalInputHandler interface to process input events and send data to the PPI.
x8086NetEmu/Adapters/Keyboard · high confidence
Added project metadata and configuration files
The x8086NetEmu project now includes standard Visual Studio metadata and configuration files, including AssemblyInfo, Resources, and Settings files. These files define the assembly's version, title, and application settings, ensuring the emulator is properly identified and configured within the .NET 4.8.1 environment.
x8086NetEmu/My Project · high confidence
Added support for parsing and navigating FAT12/16/32 file systems in the Disk Explorer
Users can now view, browse, and interact with FAT12, FAT16, and FAT32 file systems within the Disk Explorer. This includes parsing boot sectors, directory entries, and file allocation tables to correctly display file names, attributes, and timestamps. The implementation introduces new structures for handling FAT12/16/32 metadata, enabling features like double-clicking a file to launch its default editor and supporting drag-and-drop operations for copying files from the host.
x8086NetEmu/Adapters/Disk/FileSystem · high confidence
Console application entry point and configuration added
The x8086NetEmuConsole project now includes the main entry point (MainModule.vb) which initializes the emulator, registers hardware adapters (Floppy, CGA, Keyboard, Speaker, Adlib, SoundBlaster), and handles errors and termination. An app.config file is also added to configure logging and specify the .NET Framework 4.8.1 runtime version.
x8086NetEmuConsole · high confidence
Initial implementation of BASS audio subsystem
The emulator now uses the BASS library for audio playback, replacing the previous NAudio dependency. This adds new helper classes (BassHelpers, BufferProvider) to manage the BASS library and provide a file-based stream interface for audio data, enabling improved sound emulation capabilities within the x8086NetEmu environment.
x8086NetEmu · high confidence
Introduce abstract Adapter base class and Adapters collection for hardware emulation
The x8086NetEmu/Adapters directory now includes the foundational classes for the emulator's hardware abstraction layer. A new abstract Adapter class defines the interface for hardware adapters, including geometry structures (XPoint, XSize, XRectangle) and a comprehensive set of key codes (XEventArgs.Keys) for input handling. A concrete DummyAdapter implementation provides a default, non-functional adapter. The Adapters class manages a list of these adapters, handling their addition, removal, and lifecycle (Init/Close). This change establishes the core structure for pluggable hardware adapters within the emulator.
x8086NetEmu/Adapters · high confidence
Introduced new rendering backends for the x8086NetEmu emulator
The x8086NetEmuRenderers library now provides platform-independent rendering implementations, decoupling the emulator from specific UI frameworks like System.Drawing or System.Windows.Forms. This change introduces new renderers including a WinForms-based renderer (CGAWinForms) and a console-based renderer (CGAConsole), along with supporting helper classes like DirectBitmap and Image2Ascii. These additions allow the emulator to be easily adapted to other UI frameworks such as Eto.Forms, SDL, or OpenTK in the future, while also adding a WebUI renderer for browser-based access.
x8086NetEmuRenderers · high confidence
WinForms emulator UI and settings
The WinForms interface for the emulator has been established with a main window containing a context menu for emulator controls (CPU clock, emulation speed, reset, state save/load), a view menu for the debugger and console, and copy/paste text support. The application is configured for .NET Framework 4.8.1, and text rendering is explicitly enabled for the WinForms application.
x8086NetEmuWinForms · high confidence
Architecture
Refactored emulator helper classes into a modular structure
The x8086NetEmu/Helpers directory has been reorganized into distinct, single-responsibility classes including Binary, ConsoleCrayon, Decoder, EmulatorState, Exceptions, Extensions, Helpers, InterruptHandlers, Memory, OpCodes, and Properties. This refactoring isolates core emulation logic, state management, and utility functions, improving code maintainability and allowing for easier integration of new hardware adapters or rendering engines.
x8086NetEmu/Helpers · high confidence
Behavioural changes
3 commits (0 fixes) modifying Release
A change to existing behaviour in Release — 3 commits, 7 files.
Release · medium confidence · unverified
Assembly metadata and versioning updated
The assembly information for the RunTests2 project has been updated, including the company name (xFX JumpStart), copyright year (2024), and version numbers (2024.4.7.1222).
RunTests2/Properties · high confidence
Cross-platform support and CI setup for x8086NetEmu
The emulator now supports non-Windows platforms (Linux, macOS, Raspberry Pi) by replacing the Windows-only NAudio library with the cross-platform BASS library for sound emulation. Additionally, the project includes a new Azure Pipelines configuration for automated builds and tests, and adds a MIT license file and a README with usage details.
(repo-wide) · high confidence
Improved x8086 emulator performance via opcode generation
The GenOpCodes tool now parses the x8086 emulator's large 'Select Case' statement and converts it into an array of functions, which results in a +2x performance improvement. The tool includes a confirmation prompt to ensure users are aware of the changes, and it writes the generated code to the OpCodes.vb file.
GenOpCodes · high confidence
New chipset abstractions and DMA controller implementation
The chipset layer now introduces a new I/O port handler interface (IIOPortHandler) and a base class (IOPortHandler) to standardize how hardware components interact with the CPU's I/O space. This refactor underpins the addition of a new DMA8237 controller, which manages direct memory access requests and binds to specific channels. The change also includes updated implementations for the 8259 PIC, 8254 PIT, 8255 PPI, and RTC, all conforming to the new port handling structure to improve scheduling and timing accuracy.
x8086NetEmu/Chipset · high confidence
New scheduling and hardware abstraction interfaces
The emulator introduces a new time-based scheduler that manages execution timing for CPU, audio, and peripheral devices, allowing for more accurate emulation of hardware interactions. Additionally, new interfaces (IDMAChannel, IDMADevice, IInterruptController, IInterruptRequest) and a platform detection helper (HostRuntime) are added to standardize how devices communicate with the emulator core and identify the host operating system.
x8086NetEmu/Helpers/Misc · high confidence
Renamed Monitor tool to Debugger and added Console tool
The 'Monitor' tool has been renamed to 'Debugger', reflecting its actual purpose as a debugging interface for the emulator. Additionally, a new 'Console' tool has been introduced to display emulator output, featuring a context menu for copying and clearing text, and logic to suppress repeated messages. These changes are implemented in the \FormDebugger\ and \FormConsole\ classes within the \x8086NetEmuWinForms/Tools\ directory.
x8086NetEmuWinForms/Tools · high confidence
Restored My Project metadata files for the x8086NetEmuConsole application
The My Project folder, which contains essential metadata and configuration files for the .NET application, was previously missing or incomplete. This change restores the full set of My Project files, including Application.Designer.vb, Application.myapp, AssemblyInfo.vb, Resources.Designer.vb, Resources.resx, Settings.Designer.vb, and Settings.settings. These files define application settings, resource management, assembly information, and startup behavior, ensuring the application can properly manage user settings and resources.
x8086NetEmuConsole/My Project · high confidence
Dependencies
Updated project files to target .NET Framework 4.8.1 and added new test and utility projects
The solution's build configuration has been updated to target .NET Framework 4.8.1, ensuring compatibility with the latest .NET 4.8.1 runtime. Additionally, new project files have been introduced to support testing and code generation: \RunTests\ and \RunTests2\ for executing test suites (including Mike Chambers' processor tests), and \GenOpCodes\ for opcode generation. The \RunTests2\ project also introduces a dependency on \Newtonsoft.Json\ version 13.0.3, while the main emulator library (\x8086NetEmu\) now references \ManagedBass\ version 3.1.1 for audio processing.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 44 → 44 (-0.5)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 70 → 67 (-3.0)
- Architecture 99 → 99 (+0.2)
- Maturity 36 → 36 (-0.2)
- Readiness 27 → 27 (+0.0)
- Security 95 → 95 (+0.0)
Resolved (71)
- BarePragmaDisable (x8086NetEmu/Adapters/Audio/SpeakerAdapter.vb)
- Boundary-crossing change coupling: VideoChar.vb ↔ FormEmulator.vb (x8086NetEmuRenderers/Helpers/VideoChar.vb)
- Bounded contexts not declared
- Build did not complete in the analyzer
- Duplicated block (10 lines × 2) (x8086NetEmu/Adapters/Disk/FileSystem/FileSystemStructs.vb)
- Duplicated block (10 lines × 2) (x8086NetEmu/Helpers/Hooks/INT13.vb)
- Duplicated block (10 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (10 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (10 lines × 3) (x8086NetEmu/Adapters/Video/VGAAdapter.vb)
- Duplicated block (10 lines × 3) (x8086NetEmuRenderers/CGAConsole.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/x8086.vb)
- Duplicated block (11 lines × 2) (x8086NetEmuRenderers/WinForms/CGAWinForms.vb)
- Duplicated block (11 lines × 2) (x8086NetEmuWinForms/Tools/FormDiskExplorer.vb)
- Duplicated block (11 lines × 3) (x8086NetEmu/Adapters/Video/VGAAdapter.vb)
- Duplicated block (12 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (12 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (12 lines × 2) (x8086NetEmuRenderers/WinForms/CGAWinForms.vb)
- Duplicated block (12 lines × 2) (x8086NetEmuRenderers/WinForms/Controls/RenderCtrl.vb)
- Duplicated block (13 lines × 2) (x8086NetEmu/x8086.vb)
- …and 51 more
New (82)
- Build failed
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 2) (x8086NetEmu/Adapters/Disk/FileSystem/FileSystemStructs.vb)
- Duplicated block (10 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (10 lines × 2) (x8086NetEmuRenderers/WinForms/CGAWinForms.vb)
- Duplicated block (10 lines × 3) (x8086NetEmu/Adapters/Video/VGAAdapter.vb)
- Duplicated block (10–11 lines × 3) (x8086NetEmu/Helpers/Decoder.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/Helpers/OpCodes.vb)
- Duplicated block (11 lines × 2) (x8086NetEmu/x8086.vb)
- Duplicated block (11 lines × 2) (x8086NetEmuWinForms/Tools/FormDebugger.vb)
- …and 62 more
Architecture
- Unchanged — 4 containers · 0 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
morphx666/x8086NetEmu was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 006c52c52a8e2443ebf75912ae02543db0505905 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.