Phantom OS

phantomos.gif

A very small Unix-like OS for i386 clones. Framebuffer, preemptive multitasking, virtual filesystem interface, FAT12/16/32 read/write support, generic floppy driver, ATA disk driver, unix sockets, networking support. Experimental windowing API, partial libc implementation.

Native applications can be cross-compiled on a Unix system. Phantom OS works well with the Bochs i386 emulator. Experimental and dangerous. Boots from a 1.44" floppy or via etherboot.

Download

Download source tarball phantom-1.09d.tgz

Basic information

Phantom is a relatively free unix based operating system with several extra features. Born in 1998, nowadays designed only for i386, suppossed to be small and easy to use. It’s a good example of how not to write an OS. Source codes are fully available.

Major features:

  • Multiple text consoles (up to 1.09d)

  • VGA framebuffer device (1.10d)

  • working kernel space memory manager

  • fine working preemptive multitasking

  • virtual filesystem interface

  • fat based filesystems driver - FAT12, 16 and 32

  • not so bad buffer cache (needs a rewrite for mmap etc.)

  • floppy driver, IDE hd driver

  • cs4232, soundblaster drivers, kernel level sound mixer (ugly)

  • ATAPI devices (currently working with zip100 drives)

  • PCI support

  • beginning of TCP/IP implementation (+ extra ported ne2000 card driver)

  • standard libC yet incomplete implementation

  • truly client/server window manager RedGui (1.10d)

  • unix sockets implementation

For successfull compilation you need the Netwide ASseMbler

Documentation

The best way to gain some info are source files although most of them are neither clever nor useful…

  • CTRL + F8 (1.10d) switch among fb screen/user and kernel debug consoles

  • CTRL + <F1..F10> (up to 1.09d) switch console

  • ALT + TAB, CTRL + TAB switch RedGui window/task

  • CTRL + ALT + BACKSPACE, CTRL + ALT + Z print task dump

  • various CTRL + ALT + magic letter shortcuts

    • f .. flush cache

    • etc. most of these has debugging purposes, /dev/keyboard.c can say more

Since 2001-05-04.