Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
H

halfix

> 编程语言
Open source

x86 PC emulator that runs both natively and in the browser, via WebAssembly

780 stars0 likes0 views
WebsiteGitHub

About

x86 PC emulator that runs both natively and in the browser, via WebAssembly

Halfix x86 emulator

Halfix is a portable x86 emulator written in C99. It allows you to run legacy operating systems on modern platforms.

Why?

I made this mostly for fun, and because it was a great way to learn about the x86 PC architecture. On a more practical level, it can be used for:

  • Testing out or developing operating systems
  • Running old programs or operating systems that no longer work on modern computers or you wouldn't want to risk running on your personal computer.
  • Simulating other x86-based systems (the CPU component can be isolated relatively easily and used in other projects)
  • Testing web browser performance

Building and Running

You will need node.js, a C99-compatible compiler, zlib, and Emscripten (only if you're targeting the browser). Make sure that the required libraries are in a place where the compiler can find them. No pre-build configuration is required.

The display driver uses libsdl, but if you're on Windows, there's a native port that uses the Win32 API and doesn't require SDL.

…

Check the project wiki for more details.

System Specifications

  • CPU: x86-32 (FPU, MMX, SSE, SSE2, some SSE3, PAE)
  • RAM: Configurable - anywhere from 1 MB to 3584 MB
  • Devices:
    • Intel 8259 Programmable Interrupt Controller
    • Intel 8254 Programmable Interval Timer
    • Intel 8237 Direct Memory Access Controller
    • Intel 8042 "PS/2" Controller with attached keyboard and mouse
    • i440FX chipset (this doesn't work quite so well yet)
      • 82441FX PMC
      • 82371SB ISA-to-PCI bus
      • 82371SB IDE controller
      • ACPI interface
    • Intel 82093AA I/O APIC
  • Display: Generic VGA graphics card (ET4000-compatible) with Bochs VBE extensions, optionally PCI-enabled
  • Mass Storage:
    • Generic IDE controller (hard drive and CD-ROM)
    • Intel 82077AA Floppy drive controller (incomplete, but works in most cases)
  • Dummy PC speaker (no sound)

Compatibility

It boots a wide range of operating system software, including all versions of DOS, most versions of Windows (excluding Windows 8), newer versions of OS/2 Warp (3 and 4.5), ReactOS, some varieties of Linux (ISO Linux, Damn Small Linux, Red Star OS 2, Buildroot, Ubuntu), 9Front, NeXTSTEP, several hobby OSes, and probably more.

See Compatibility for more details.

Self-Virtualization

Can you run the emulator inside the emulator?

Yes, but not very quickly.

Screenshots

MS-DOS

OS/2 Warp 4.5

Windows Vista

Windows 7

The same Windows 98 disk image as in the Halfix in Halfix screenshot running in Firefox

CPU-Z on Windows XP

Windows 10

Ubuntu

Transferring Files

Create a directory with all the files you want to transfer and create an ISO image.

mkisofs -o programs.iso -max-iso9660-filenames -iso-level 4 programs/

Now update the configuration file as follows:

# Note: it does not hae to be ata0-slave. 
# I have not tested it with anything but ata0-slave.
[ata0-slave]
inserted=1
type=cd
file=/tmp/programs.iso
driver=sync

Now boot up your operating system and copy the files from the CD-ROM to the hard drive.

Known Issues

  • SSE3 is not fully supported
  • Performance isn't terrible, but it isn't fantastic either (70-100 MIPS native, 10-30 MIPS browser)
  • Timing is completely off
  • Windows 8 doesn't boot (see this issue)
  • FPU exceptions are probably very incorrect
  • Most devices aren't complete, but enough is implemented to boot modern OSes.
  • The configuration file parser isn't very good

License

GNU General Public License version 3

Similar Projects

  • v86
  • JSLinux
  • jemul8

Credits

The FPU emulator uses an modified version of Berkeley SoftFloat from the Bochs emulator.

Issues· 26 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Ccc99cpu-emulatoremscripten

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言