Announcing BT/OS
Posted: Wed Aug 27, 2014 4:36 am
I've been working on this for a few months now, but haven't announced it until there was something worth announcing. Since I tagged my first "release" (v0.0A) the other day, I guess that time has come...
BT/OS is (currently) a 32-bit, multi-tasking/multi-threading (threading API not yet available in userspace) OS compiled for Intel i686 platforms. (Test builds have also been made for i586.) One of the aims is to have it run on low-cost, embedded x86 CPUs, such as the Intel Quark and DM&P Vortex86 (hence being 32-bit for now), but not to exclude use on "normal" PCs.
The system is not designed to be particularly POSIX/UNIX-like (except where convenient) and draws influence from a wide variety of OSs, including UNIX, DOS, OS/2, Windows NT and AmigaOS. The kernel supports loadable modules (no unloading yet) and runs userspace programs in their own virtual memory spaces. I have support for PS/2 keyboards (a bit hacky, it assumes that the keyboard has already been initialised) and FAT16/32 filesystems on ATA hard drives. The toolchain is based on biinutils 2.23 and GCC 4.8.1. Newlib 2.1.0 has been ported (roughly) and libstdc++ works.
Some code from other sources is used (printf, liballoc, FAT implementation) to reduce development time and/or because I'm not particularly interested in the details of implementing such things. As such, the kernel is licenced under GPLv2 (without the "or later version" clause). The header files in "src/include" are public domain so as not to restrict the licencing of any future applications or modules (I have no desire to project any political views onto users of my OS, unlike certain other projects...).
Anyway, I've attached a screenshot. This is from the current version, a few revisions on from the 0.0A "release", with the main new feature being "globbing" in the shell (CMD.ELX). There is no proper "terminal driver" yet, so the shell (and all other applications) use the input/display devices directly for now. The next work to be done is some enhancements to the memory manager (to support things like file mapping, shared memory and "guard pages"), threading for userspace, a terminal driver to facilitate sane multitasking (still not sure whether I'll have VT100/ANSI emulation built-in or not) and then on to a GUI.
Comments/questions welcome. Project available on GitHub here.
BT/OS is (currently) a 32-bit, multi-tasking/multi-threading (threading API not yet available in userspace) OS compiled for Intel i686 platforms. (Test builds have also been made for i586.) One of the aims is to have it run on low-cost, embedded x86 CPUs, such as the Intel Quark and DM&P Vortex86 (hence being 32-bit for now), but not to exclude use on "normal" PCs.
The system is not designed to be particularly POSIX/UNIX-like (except where convenient) and draws influence from a wide variety of OSs, including UNIX, DOS, OS/2, Windows NT and AmigaOS. The kernel supports loadable modules (no unloading yet) and runs userspace programs in their own virtual memory spaces. I have support for PS/2 keyboards (a bit hacky, it assumes that the keyboard has already been initialised) and FAT16/32 filesystems on ATA hard drives. The toolchain is based on biinutils 2.23 and GCC 4.8.1. Newlib 2.1.0 has been ported (roughly) and libstdc++ works.
Some code from other sources is used (printf, liballoc, FAT implementation) to reduce development time and/or because I'm not particularly interested in the details of implementing such things. As such, the kernel is licenced under GPLv2 (without the "or later version" clause). The header files in "src/include" are public domain so as not to restrict the licencing of any future applications or modules (I have no desire to project any political views onto users of my OS, unlike certain other projects...).
Anyway, I've attached a screenshot. This is from the current version, a few revisions on from the 0.0A "release", with the main new feature being "globbing" in the shell (CMD.ELX). There is no proper "terminal driver" yet, so the shell (and all other applications) use the input/display devices directly for now. The next work to be done is some enhancements to the memory manager (to support things like file mapping, shared memory and "guard pages"), threading for userspace, a terminal driver to facilitate sane multitasking (still not sure whether I'll have VT100/ANSI emulation built-in or not) and then on to a GUI.
Comments/questions welcome. Project available on GitHub here.