A terminal emulator for running on bare x86 machines.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Turning useless PCs into slightly less useless PCs since 2011.

x86term is a terminal emulator that runs without the benefit of an operating system for ease of use and deployment on legacy computers too old to run even the most modest of Linux distros. If you've ever wanted the joys of a glass-screen terminal but can't scrounge up a DEC VT on eBay, this is the software package for you.

It's also in part a proof-of-concept for demonstrating the flexibility of Paul Evans' libvterm library, which is a necessary component of this project. More details in the "Credits" section.

System Requirements

A PC-AT(X) computer with at least 512K or so of highmem, a floppy drive or hard disk of approximately the same size, a VGA-compatible video device, a reasonably sane BIOS, and a standard BIOS-connected UART.

Tested successfully on a couple of PIIX-board Intel systems, is known to boot (but actual functionality untested) on Toshiba 400CS and many others.

How To Build/Use

The easiest way to get started is to download the floppy image from the Downloads section of the GitHub page. This, however, may be outdated.

It's highly suggested that you install qemu and/or bochs if you plan to develop for x86term.

After cloning a copy of x86term's code, in a sibling directory checkout Paul Evans' libvterm by running bzr checkout http://bazaar.leonerd.org.uk/c/libvterm. It's critical that you not build libvterm using his Makefile, as options need to be passed to prohibit the inclusion of your OS's library files.

Inside the x86term directory, you should be able to run make and get the basic kernel ELF image, which is bootable by any multiboot compliant bootloader. make qemu will launch a qemu instance using stdio as the serial port and booting the x86term kernel, and provides a handy tool for testing. make floppy.img will create an image file which you can (theoretically) write to a floppy disk and use to boot your soon-to-be glass terminal. make test runs qemu with the serial port attached to a fresh bash instance. This is the most convenient way of trying out x86term.

Current Limitations

Currently x86term is capable of being used to successfully edit files in vim and generally fairly functional using bash. This has been tested both in an emulator and on a real piece of hardware. GNU screen + irssi works, which fulfills the initial goals of this project.

TODO: Optional baudrate selection at startup (maybe baudrate autodetection?), parsing of multiboot parameters, alternative video modes, better terminal bell, optional gweep/keypress beep.


I wouldn't have known where to start with this project if it weren't for the folks over at OSDev and for James Molloy's wonderful tutorial.. I've liberally borrowed code fragments, though only after ensuring I understood it (and writing my own horrible, hackish rough equivalents to make sure I understood it.) Hopefully no one will be offended, I'll try to go through and insert proper citations as this project nears maturity.

I'd also like to thank my friend Paul "LeoNerd" Evans for his terminal emulation library, without which this project would've been too tedious to bother with for such a small payoff.


This software is released under the terms of the General Public License v3. A copy is included in the source tree as required by the license.

No guarantees are made about the fitness of this software for any purpose, explicit or implied. This software may eat your data, shave your eyebrows, give your pets fleas, and urinate in your gas tank, in any order and combination.