Hobbyist operating system development
Hobbyist operating system development is one of the more involved and technical options for a computer hobbyist. The definition of a hobby operating system can sometimes be vague. It can be from the developers view, where the developers do it just for fun or learning; it can also be seen from the users view, where the users are only using it as a toy; or it can defined as an operating system which doesn't have a very big user base.  Development can begin from existing resources like a kernel, an operating system or a bootloader, or it can also be made completely from scratch. The development platform could be a bare hardware machine, which is the nature of an operating system, but it can be developed and tested on a virtual machine. Since the hobbyist must claim more ownership for adapting a complex system to the ever changing needs of the technical terrain, much enthusiasm is common amongst the many different groups attracted to operating system development.
Elements of operating system development include:
- External Programs
- User interface
Developers of hobby Operating Systems commonly use the C programming language and/or assembly language. The C Programming Language remains popular for developers working with more complex systems, due to its low-level capabilities and ability to produce code requiring no run-time support. The use of assembly language is more common with smaller systems, especially those based on eight bit microprocessors such as the MOS Technology 6502 family or the Zilog Z-80, or in systems with a lack of available resources because of the its small output size and low-level efficiency.  It is also possible write a hobbyist operating system in other programming languages but assembly and C are preferred due to their low-level instruction sets.
A hobby operating system can use a Command-line Interface, a Text User Interface or a Graphical User Interface. Most hobby operating systems use a command-line interface or a simple text user interface because they are quick and easy to make and time is often a limiting factor for programmers of hobby operating systems. More advanced hobby operating system often use a graphical user interface but graphical interfaces are complicated and take a lot of time to create.
Use of BIOS
Main Article: BIOS interrupt call
BIOS (Basic Input/Output System) is a firmware chip designed to initialise computer hardware and load a computer's operating system.  BIOS also sets up a standard interface for several low-level device drivers at boot time. Their drivers are often used by hobbyist operating systems, especially those written on 16-bit x86 machines. BIOS drivers are commonly used because many developers hobbyist operating systems lack the time or expertise to write complex low level drivers themselves or they simply want to get into writing software for the system as soon as possible.
The most commonly used BIOS functions are VideoBIOS and Disk services. These are used because video cards and disk drives vary significantly on different machines and specialised drivers are often difficult to write.
- OSDev.org - A hobby OSDev community
- aodfaq - Extensive and editable OS development FAQ
- Bona Fide OS Development - Store of OS development tutorials and other documents
- Operating System Resource Center - Information and resources on various OSDev topics (both software and hardware)
- #OsDev on Freenode - An IRC channel for OSDev enthusiasts
- A step by step tutorial