Repository navigation
Development Build
Pre-release
Pre-release
Features
- Improve register UI: formatting, highlighting, theming (OpenRakis#1845) #1845 (Maximilien Noal)
- CPU Heavy log (OpenRakis#1850) #1850 (Kevin)
- Refactor emulator state serialization. Enables new feature to save as assembly listing the executed instructions. #1852 (Kevin Ferrare)
- More complete AST subsystem #1855 (Kevin Ferrare)
- Add options to customize ASM output. Dosbox format support for easier compares of heavylog #1855 (Kevin Ferrare)
- Log registers in heavy log (OpenRakis#1870) #1870 (Kevin)
- Preliminary step for enable single step tests that are passing, support revocation lists for us. The lists would be too big for now so keep the tests disabled. (OpenRakis#1778) #1778 (Kevin)
- Benchmark mode, allow to stop the emulator after some cycles (OpenRakis#2032) #2032 (Kevin)
- Theme-aware, syntax-highlighted CFG graph rendering (OpenRakis#2012) #2012 (Maximilien Noal)
- Make VGA rendering happen on event base. This makes the VGA registers deterministic. Improve renderer performances. (OpenRakis#2005) #2005 (Kevin)
- mcp: improve tool descriptions, inline screenshots, and enable custom tool suppliers (OpenRakis#2053) #2053 (Joris van Eijden)
- Add deterministic, low‑overhead clock jitter (--ClockJitterSeed) (OpenRakis#2071) #2071 (Kevin)
- Configurable emulator start time (OpenRakis#2075) #2075 (Kevin)
- AST for CfgCpu instruction execution (OpenRakis#2069) #2069 (Kevin)
- better test for self modifying code, we need to execute it several times to make sure the instruction is correctly replaced in the CFG graph (OpenRakis#2090) #2090 (Kevin)
- New option CpuHeavyLogExpressions to append custom values to heavy log. (OpenRakis#2093) #2093 (Kevin)
- AST based basic JIT for cfgcpu (OpenRakis#2096) #2096 (Kevin)
- Refactor parser to use AST and not mixins. (OpenRakis#2115) #2115 (Kevin)
- CFG Blocks baked into execution engine (OpenRakis#2166) #2166 (Kevin)
- Function partitionning from Cfg Graph (OpenRakis#2192) #2192 (Kevin)
- Implement cyclic partition classification (OpenRakis#2203) #2203 (Kevin)
- Dump and reload the cfg graph so that execution data is preserved accross runs (OpenRakis#2204) #2204 (Kevin)
- Add CD-ROM/floppy engine, MSCDEX, and drive noise support #2196 (Maximilien Noal)
- Add drive management UI and toast notification system #2196 (Maximilien Noal)
- booting and image mounting functionality #2196 (Maximilien Noal)
- Enhance Floppy Disk Controller with I/O port handling and DMA support #2196 (Maximilien Noal)
- Remove hard disk boot functionality and related tests #2196 (Maximilien Noal)
- Implement end-to-end integration tests for floppy-image batch processing #2196 (Maximilien Noal)
- Introduce DosDriveStatusProvider for enhanced drive status management and update related components #2196 (Maximilien Noal)
- Add IOCTL drive register probe tests for local fixed and floppy drives #2196 (Maximilien Noal)
- Enhance memory drive support and improve error messaging for drive changes #2196 (Maximilien Noal)
- Update CD-ROM drive registration to include volume label and enhance related tests #2196 (Maximilien Noal)
- Enhance MSCDEX audio handling with new state management and update related tests #2196 (Maximilien Noal)
- Enhance CD-ROM and floppy drive handling with improved read operations and error management #2196 (Maximilien Noal)
- implement ApplyChannelControl method for audio routing and gain adjustments #2196 (Maximilien Noal)
- Add standalone DOS CDDA assembly example and launcher scripts #2196 (Maximilien Noal)
- Implement boot command handling and associated launch request for floppy images #2196 (Maximilien Noal)
- BIOS INT 14h serial port services handler and integrate into dependency injection #2196 (Maximilien Noal)
- Implement BIOS INT 17h printer services handler and integrate into dependency injection #2196 (Maximilien Noal)
- INT15h 0x41 just calls 'Unsupported' handler #2196 (Maximilien Noal)
- Code generator (OpenRakis#2207) #2207 (Kevin)
- Speculative discovery of nodes in memory (OpenRakis#2222) #2222 (Kevin)
Bug Fixes
- video aspect ratio with dynamic ScaleTransform binded to VideoMode AspectRatio property (OpenRakis#1833) #1833 (Maximilien Noal)
- COM file are allocated the entire available memory #1843 (Maximilien Noal)
- ModifyMemoryBlock returns the segment on success in AX #1843 (Maximilien Noal)
- CurrentSize points to the first segment AFTER the allocated block #1843 (Maximilien Noal)
- GetCurrentDirectory crashed the emulator (INT21H) (OpenRakis#1839) #1839 (Maximilien Noal)
- Alpha Waves loader again (Specific INT21H 0x4A behavior) (OpenRakis#1867) #1867 (Maximilien Noal)
- dock semi theme did not use en-us locale (OpenRakis#1871) #1871 (Maximilien Noal)
- CloseFileOrDevice sets AL to file handle refcount on success (OpenRakis#1844) #1844 (Maximilien Noal)
- Display correct link type (OpenRakis#1948) #1948 (Kevin)
- step into (OpenRakis#1960) #1960 (Maximilien Noal)
- CALL to RET link does not detect self modifying code in some cases. (OpenRakis#1966) #1966 (Kevin)
- Make VGA renderer depend on emulated time to make code deterministic and benefit from TimeMultiplier. Make InstructionsPerSecond work again (this is not linked to cycle limiting). (OpenRakis#1994) #1994 (Kevin)
- fix both pause/unpause and step into and step over (OpenRakis#1968) #1968 (Maximilien Noal)
- remove some constant GC allocations from ToBits method (OpenRakis#2008) #2008 (Maximilien Noal)
- allocate space for all DosSysVars (OpenRakis#2011) #2011 (Ievgenii Meshcheriakov)
- PCM bug by using corrected 11.4 Spice86.Audio package (OpenRakis#2031) #2031 (Maximilien Noal)
- IregsFrameSize at 0 prevents stack corruption (OpenRakis#2035) #2035 (Maximilien Noal)
- VgaFunctionnality double-division of text amount (OpenRakis#2036) #2036 (Maximilien Noal)
- crash in concurrent Dictionary corruption in CfgCpuViewModel (OpenRakis#2073) #2073 (Copilot)
- Expand INT 21h AH=33h with BootDrive and Dos Version support (OpenRakis#2112) #2112 (Maximilien Noal)
- Fix INT9H not processing in Monkey Island 2 (batch file PR regression) (OpenRakis#2113) #2113 (Maximilien Noal)
- Update FastExpressionCompiler reference to Release DLL (OpenRakis#2120) #2120 (Maximilien Noal)
- correct COMMAND.COM PSP[0x02] size, and DOS media ID tables segment and informations returned by DOS INT21H (OpenRakis#2138) #2138 (Copilot)
- Add FastExpressionCompiler.dll to NuGet package output (Nuget 13.1 release) (OpenRakis#2147) #2147 (Maximilien Noal)
- replace State.CarryFlag direct assignments with SetCarryFlag helper in interrupt handlers (OpenRakis#2149) #2149 (Copilot)
- Open ListBox context menu on ListBox, not ListBoxItem (OpenRakis#2150) #2150 (Maximilien Noal)
- remove redundant screenshot metadata serialization #2165 (copilot-swe-agent[bot])
- We mostly pass single step tests for 386 (OpenRakis#2135) #2135 (Kevin)
- DISASM view is too slow (OpenRakis#2168) #2168 (Kevin)
- failing tests in Linux CI environment (OpenRakis#2175) #2175 (Maximilien Noal)
- Tests should not leave resources behind. (OpenRakis#2176) #2176 (Kevin)
- Fix flaky avalonia test (OpenRakis#2177) #2177 (Kevin)
- Fix another round of avalonia flaky tests (OpenRakis#2178) #2178 (Kevin)
- Put correct types for far pointers in structs (OpenRakis#2179) #2179 (Kevin)
- FCB FindFirst now uses extended DTA format (FreeDOS, Civlization) #2180 (Maximilien Noal)
- Eliminate deferred scrolling in DisassemblyScrollBehavior (OpenRakis#2191) #2191 (Maximilien Noal)
- Dune menus were broken again. Made Castle Adventure, RoE2, Another World AND Dune all happy with a better fix #2193 (Maximilien Noal)
- Use lock in softwaremixer (oversight from C++ porting process) (OpenRakis#2206) #2206 (Maximilien Noal)
- Normalize DOS path in batch command resolution and add integration test for slash path handling #2196 (Maximilien Noal)
- Echo batch lines with DOS prompt when ECHO is ON #2196 (Maximilien Noal)
- Dispose _clock in RealTimeClock.Dispose() #2196 (Maximilien Noal)
- IMGMOUNT CUE/BIN host path support #2196 (Maximilien Noal)
- Use SetCarryFlag in DOS INT21H MSCDEX functions #2196 (Maximilien Noal)
- SystemClockInt1AHandler uses SetCarryFlag #2196 (Maximilien Noal)
- SetRTCDate uses SetCarryFlag #2217 (Maximilien Noal)
- Resource leak in the tests #2230 (Kevin Ferrare)
- Fix headless gui and clock keeping references to emulator and making tests very memory hungry. Added a test to verify this doesnt happen anymore. (OpenRakis#2234) #2234 (Kevin)
- CI error when publishing release (OpenRakis#2235) #2235 (Kevin)
- CI fails due to security, bump package with CVE #2254 (Kevin Ferrare)
- Show 16 bytes per row in the memory view of the internal debugger #2258 (brunom)
- Internal debugger crash when instruction would read 2 bytes starting at 0xFFFF #2260 (brunom)
Documentation
- add README files for Spice86.Storage.Cd and Spice86.Storage.Fat packages #2196 (Maximilien Noal)
Code Refactoring
- FCB APIs to use SegmentedAddress types #2180 (Maximilien Noal)
- Optimized & improved DosExecResult and DosFileOperationResult. (OpenRakis#2181) #2181 (Thomas Kaiser)
- Remove startup and shutdown events #2196 (Maximilien Noal)
- Clearer Emulator Session setup and Bootstrapping with smaller classes and no events #2196 (Maximilien Noal)
- Remove dosbox-staging subproject reference #2196 (Maximilien Noal)
- Simplify drive resolution logic and enhance DosPathBuilder instantiation #2196 (Maximilien Noal)
- Remove DOSBox Media Parity Finish plan document #2196 (Maximilien Noal)
- Enhance documentation and formatting in DosInt2fHandler #2196 (Maximilien Noal)
- Update documentation for ExecutionPolicy to clarify breakpoint descriptions #2196 (Maximilien Noal)
- Update SystemBiosInt13Handler to remove nullable types and improve dependency injection #2196 (Maximilien Noal)
- Replace logical conditions with pattern matching for improved readability #2196 (Maximilien Noal)
- error handling in CD images support #2196 (Maximilien Noal)
- make parsing methods static #2196 (Maximilien Noal)
- remove duplicated code in dosbatchloader #2196 (Maximilien Noal)
- simplify parameters in TryBootFromFloppyImage method and update documentation #2196 (Maximilien Noal)
- Use collection expression #2196 (Maximilien Noal)
- update CdAudioPlayer and CdRomDrive constructors for improved initialization #2196 (Maximilien Noal)
- update CdAudioPlayer and CdRomDrive constructors to require non-null activity notifier #2196 (Maximilien Noal)
- Add MSCDEX device driver command and IOCTL code definitions #2196 (Maximilien Noal)
- path handling to use Path.Join for improved cross-platform compatibility #2196 (Maximilien Noal)
- update drive mounting methods for improved error handling and clarity #2196 (Maximilien Noal)
- replace geometry and transfer methods with result objects for improved error handling #2196 (Maximilien Noal)
- enhance drive mapping and transfer methods for improved clarity and error handling #2196 (Maximilien Noal)
- improve documentation for SubchannelQData and SubchannelQSynthesizer classes #2196 (Maximilien Noal)
- method names for clarity and consistency #2196 (Maximilien Noal)
- update GetContentMap method to handle empty/unmounted drives and improve documentation #2196 (Maximilien Noal)
- update DriveMenuItemViewModel and DrivesMenuViewModel to remove nullable types and improve constructor clarity; enhance DriveContentVisualization for better visual representation of CD tracks #2196 (Maximilien Noal)
- replace BiosParameterBlock with FatBiosParameterBlock across multiple files for improved clarity and consistency in FAT filesystem handling #2196 (Maximilien Noal)
- replace magic numbers with enums for clarity in IsoImage, WavAudioFile, FatBootSectorCodec, DirectoryWriter, LongFileNameCodec, VfatDirectoryReader, VfatLfnEntry, FatDirectoryEntry, and VirtualFloppyImage #2196 (Maximilien Noal)
- streamline CdRom tests by utilizing CdRomTestFixture for audio drive creation and removing redundant methods #2196 (Maximilien Noal)
- signature check with SequenceEqual #2196 (Maximilien Noal)
- implement PCBootLoader for floppy image booting and remove obsolete boot command handlers #2196 (Maximilien Noal)
- enhance DosNameConverter with CP437 uppercase mapping and improve DOS name validation #2196 (Maximilien Noal)
- enhance DriveContentMap and DriveContentVisualization for floppy disk support #2196 (Maximilien Noal)
- enhance CdRomImageFactory and CueBinImage for improved disc image handling #2196 (Maximilien Noal)
- Enhance floppy disk visual realism in drive visualization #2196 (Maximilien Noal)
- return an empty list instead of throwing #2196 (Maximilien Noal)
- Use System.Threading.Lock #2196 (Maximilien Noal)
- Make a single constructor for mscdex #2196 (Maximilien Noal)
- remove unused parameter #2247 (Maximilien Noal)
Performance Improvements
- Optimize Alu.IsParity method. #2205 (Thomas Kaiser)
Tests
- update DOS exec integration expectations for ECHO/@ bootstrap echo parity #2196 (Maximilien Noal)
Chores
- update nuget packages (avalonia, tests) (OpenRakis#1831) #1831 (Maximilien Noal)
- aeeded ModifyMemoryBlock comment #1843 (Maximilien Noal)
- better debug window icon (OpenRakis#1965) #1965 (Maximilien Noal)
- Display last CFG node rendering in SingleStepTest failure messages and fix modrm parser (OpenRakis#1970) #1970 (Copilot)
- update packages (OpenRakis#1959) #1959 (Maximilien Noal)
- remove small oversights (OpenRakis#2034) #2034 (Maximilien Noal)
- v12 of Nuget package (OpenRakis#2054) #2054 (Maximilien Noal)
- update avalonia v11 packages (OpenRakis#2070) #2070 (Maximilien Noal)
- v12.1 of Nuget package (OpenRakis#2091) #2091 (Maximilien Noal)
- update Avalonia package from .13 to .14 (fixes security warning as error) (OpenRakis#2111) #2111 (Maximilien Noal)
- bump version to 13.0.0 for v13 release (OpenRakis#2146) #2146 (Copilot)
- Update MT32 Nuget to v1.0.0 #2165 (Maximilien Noal)
- Update Minor NuGet package versions for several dependencies #2165 (Maximilien Noal)
- Update package versions and refactor MCP tools JSON handling #2165 (Maximilien Noal)
- Update Serilog.Extensions.Hosting #2165 (Maximilien Noal)
- Update Spectre.Console.Cli to 0.55.0 and adapt command API #2165 (Maximilien Noal)
- Update Nuget packages (including Spice86.DataGrid) #2164 (Maximilien Noal)
- Spice86 Nuget v13.1.2 release #2164 (Maximilien Noal)
- Bump version to 14 and update release notes URL (CPU, DOS, Debugger) #2180 (Maximilien Noal)
- Document I/O port handler system and improve docs UX #2180 (Maximilien Noal)
- Vastly expand MCP.MD document #2180 (Maximilien Noal)
- Spice86 v14.1 Nuget Release (OpenRakis#2190) #2190 (Maximilien Noal)
- removed dead code #2193 (Maximilien Noal)
- Remove+Sort usings #2193 (Maximilien Noal)
- Release of Spice86 Nuget v14.3 (OpenRakis#2202) #2202 (Maximilien Noal)
- Add CD-ROM and FAT storage libraries with full image support #2196 (Maximilien Noal)
- Add new assemblies to Nuget publish workflow #2196 (Maximilien Noal)
- Lower RTC StatusB log level from Information to Debug #2196 (Maximilien Noal)
- Lower RTC log level from Information to Debug #2196 (Maximilien Noal)
- remove superfluous comment #2196 (Maximilien Noal)
- remove unnecessary comment in FloppyDiskNoiseDevice #2196 (Maximilien Noal)
- remove internal SoundChannel property from CdAudioPlayer #2196 (Maximilien Noal)
- made comments less verbose #2196 (Maximilien Noal)
- Remove+Sort usings #2196 (Maximilien Noal)
- remove Floopy disk noise emulation (too complicated) #2196 (Maximilien Noal)
- Trimmed CD and FAT assemblies READMes #2196 (Maximilien Noal)
- new Nuget release commit (v15) #2196 (Maximilien Noal)
- Update README.md #2196 (Maximilien Noal)
- Update CREDITS in README.md #2196 (Maximilien Noal)
- update CREDITS again in README.md #2196 (Maximilien Noal)
- Remade UI layout in MainWindow to be less cramped #2247 (Maximilien Noal)
- Update Nugets: Avalonia v12.1, SkiaSharp v4 (better perfs) #2257 (Maximilien Noal)
- Spice86 v15.0.0 major NuGet release + auto prerelease NuGet on master (OpenRakis#2267) #2267 (Copilot)
Commits
- ASM tests DOS realloc with various paddings #1843 (Maximilien Noal)
- ef25f0d: Improved cfgcpu UI graph (OpenRakis#1811) (Maximilien Noal) #1811
- handle int 10,B for unexpected values in BX #1857 (Alberto Marnetto)
- aa6f50c: allows dec/hex/bin values on commandline for ProgramEntryPointSegment (OpenRakis#1856) (LowLevelMahn) #1856
- de98e05: Fix/tsr support (fixes Alpha Waves) (OpenRakis#1854) (Maximilien Noal) #1854
- a1c1a6e: Fix Colonization game (OpenRakis#1858) (Bruno Martinez) #1858
- Debugger behaves visually strange when trying to reach a breakpoint (OpenRakis#1851) #1851 (Maximilien Noal)
- a95a686: removes \r constrain in cli parameter (OpenRakis#1907) (LowLevelMahn) #1907
- effa98e: replace NukedOPL3 port with a nuget package (OpenRakis#1908) (Stefan Hueg) #1908
- f54028b: ignoring MSHERC.COM's int 10h/ah=efh (OpenRakis#1909) (LowLevelMahn) #1909
- d17e8b0: Open the same file handles as DOS does (OpenRakis#1869) (Alberto Marnetto) #1869
- full CP/M FCB file API support for DOS INT 21h handler (OpenRakis#1780) #1780 (Maximilien Noal)
- 6a635d8: Cross platform audio, single audio thread, full audio emulation accuracy, full implementation of the entire SB PCM, SB DSP, SB Hardware mixer, SB reset delay, OPL port read/write delays, SB variants, OPL3, OPL2, dual OPL2, Adlib Gold Music and surround effects, and rewired PC Speaker. Full software mixer UI on top. (OpenRakis#1635) (Maximilien Noal) #1635
- PCM Performance, and v12 of Nuget package release (once merged) (OpenRakis#1947) #1947 (Maximilien Noal)
- MT32 and General MIDI were silent (OpenRakis#1963) #1963 (Maximilien Noal)
- Add jump arc visualization to disassembly view (OpenRakis#1961) #1961 (Maximilien Noal)
- b5cd8c7: refactor: command line parsing (OpenRakis#2019) (Maximilien Noal) #2019
- b9f5fec: Add GitHub Pages site for Spice86 (OpenRakis#2018) (Copilot) #2018
- HTTP server for memory read/write by other processes (OpenRakis#1971) #1971 (Maximilien Noal)
- MCP Server for reverse engineering (OpenRakis#1924) #1924 (Maximilien Noal)
- 424154a: Implement VGA horizontal pixel panning (AR13 smooth scrolling) (OpenRakis#2040) (Copilot) #2040
- 5b8a876: Fix FCB FindFirst/FindNext DTA format and add volume label search support (OpenRakis#2072) (Copilot) #2072
- c431d06: Feature/batch support and fixed all MS-DOS 1.x NON-IOCTL console functions and IOCTL console functions bugs (OpenRakis#2004) (Maximilien Noal) #2004
- b9a8384: feat; disasm view inline evaluators (OpenRakis#2014) (Maximilien Noal) #2014
- 385f588: Fix/disasm: more inline evaluators (LDS, LES, LEA, CALL FAR) (OpenRakis#2094) (Maximilien Noal) #2094
- ff2bfef: Refactor/dos console driver (OpenRakis#2095) (Maximilien Noal) #2095
- 4e91bd4: Fix negative displacement display in UI disasm evaluator (bp-0xE shown as BP+0xFFF2) (OpenRakis#2097) (Copilot) #2097
- 2e0c0fe: Fix/tests inodes issue (OpenRakis#2118) (Maximilien Noal) #2118
- 6264d03: Migration/avaloniav12 (OpenRakis#2136) (Maximilien Noal) #2136
- 3289185: Show currently-executing DOS program name in main window title (OpenRakis#2143) (Copilot) #2143
- mouse capture to main Window (OpenRakis#1805) #1805 (Maximilien Noal)
- baf34a7: Fix/mcp server screenshot and input support (and dependency injection refactoring) (OpenRakis#2139) (Maximilien Noal) #2139
- Calling an override is not the same as calling an asm function, no return instruction is expected. (OpenRakis#2145) #2145 (Kevin)
- Adjust MediaIdTable offset in DOS parameter block (Wolf3D) (OpenRakis#2152) #2152 (Maximilien Noal)
- 507712c: Potential fix for pull request finding (Maximilien Noal) #2165
- AutoComplete, conditions, and * wildcard for INT and I/O port breakpoints #2164 (copilot-swe-agent[bot])
- Add breakpoint-type icon column to breakpoints data grid #2164 (copilot-swe-agent[bot])
- 53b9fe4: Improvements to DosDriveManager (OpenRakis#2161) (Thomas Kaiser) #2161
- 424217c: DosPathResolver improvements & bug fixes (OpenRakis#2167) (Thomas Kaiser) #2167
- Inversion of Control in the internal debugger UI ViewModels, interfaces and plugin based approach, and show EMS and XMS memory (OpenRakis#1967) #1967 (Maximilien Noal)
- 472a995: Fix/dos relative path regression (OpenRakis#2174) (Maximilien Noal) #2174
- Minor FCB tests cleanups #2180 (Maximilien Noal)
- c4c92ae: Revert "chore: Document I/O port handler system and improve docs UX" (Maximilien Noal) #2180
- 6a0e32e: Update nugets (fixes UI freeze) (OpenRakis#2188) (Maximilien Noal) #2188
- DOS Memory information: Used and free memory, PSPs, MCBs, and PSP chain graph (OpenRakis#2183) #2183 (Maximilien Noal)
- off-by-one columnin pan shift logic for text and graphics modes #2193 (Maximilien Noal)
- Improve bounds checking in ApplyPannedRow (fixes Tom Long crash) #2193 (Maximilien Noal)
- fcafddf: Fix ternary operators and add AR13 text mode unit tests (copilot-swe-agent[bot]) #2193
- DOS code page support (OpenRakis#2194) #2194 (Maximilien Noal)
- VESA VBE 1.2 (OpenRakis#1587) #1587 (Maximilien Noal)
- 074b837: Fix that vga rom is mapped into the emulators memory space (OpenRakis#2201) (Stefan Hueg) #2201
- a47f6f0: Implement DOSBox-compatible floppy disk I/O timing service (Maximilien Noal) #2196
- Update RTC integration INT1AH tests expectations #2217 (Maximilien Noal)
- 14494e8: Add interrupt handler 21h 57h (Gregor Alujevič) #2233
- e97fc96: Update NukedOPL3Sharp package version to 1.2.0 (OpenRakis#2268) (Stefan Hueg) #2268
- 9717868: Fix running Spice86 with the UI (in non-headless mode) on Linux (Karl Lenz) #2281