OS Development

This page is a small collection of source code, information, and links related to general Operating Systems’ Development on the Web.

SOURCE CODE

Here is some source code, written by Andy McLaughlin, which might be useful to programmers who are developing OS- like products on the x86 platform.   Files ending with an “.s” extension are NASM- compatible (Intel syntax) Assembler code.

enableA20.s This is a fairly versatile snippet of code for enabling the x86’s A20 address line.   It’s a little bit lengthy, but it seems to work more reliably than other examples I’ve tried.  Cut and paste it into one of your existing source files.
vesaModes.s This piece of 16-bit code will query the VESA BIOS for a supported graphics mode number based on the desired parameters of resolution and colour depth.  Cut and paste it into one of your existing source files.
 

LINKS

Here are some selected links to sites useful to OS developers (much of this is specific to PC- style hardware architectures).  Please email me about any broken links or erroneous descriptions.  Thanks.

General

Questions For an OS Designer So, why are you doing this anyway?  This should be required reading for anyone contemplating starting an OS project
The OSDev.org wiki Almost everything you need to know about OS development
The Operating Systems Resource Center Great collection of technical information and tutorials
SigOps: Create Your Own Operating System This is a broadly focused site about OS theory
Ralf Brown’s Interrupt List (also try this HTML Version) Don’t start any OS project on an x86 machine without getting this first.
HelpPC WWW conversion (or download the actual HelpPC application) Likewise.
sandpile.org — 80×86 index Lots of good information about x86 processors.
NASM – The Netwide Assembler Project – FREE 80×86 assembler A GREAT little open- source assembler for x86 machines.

 

File systems

Design and Implementation of the Second Extended File System The original EXT2 white paper
The Second Extended File System Another EXT2 doc from a Linux site
The Filesystems HOWTO Info about lots of different filesystems
File System Info HPFS, FAT, NTFS info
The Second Extended (EXT2) File System An EXT2 “book” by Dave Poirier.  Very good.
EXT4 Disk Layout Very detailed info about the new features found in EXT4
The Extended-2 (EXT2) Filesystem Overview A white paper by Gadi Oxman.  A bit dated, but good as an alternative source of EXT2 information.
UDF (DVD) filesystem DVD-ROM filesystem format specifications
UDF (DVD) filesystem Good intoduction to UDF

 

File Formats

Wotsit’s Format: The programmer’s file formats and data formats resource. This site is a godsend.  Information on file formats of almost any kind.   Look here before you go anywhere else.
Standard Disk Format (Maverick) All about the format of the x86 Master Boot Sector
DJGPP COFF Spec About the COFF object file format
The Graphics File Format Page Info about lots of graphic file formats
PCF Bitmap Font Files X11 (Linux, Unix) font file format

 

PC Hardware References

Pentium(r)Processor – Manuals You need this if you’re going to do any coding in x86 Assembly language
ATA-ATAPI.COM — ATA ATAPI IDE EIDE
Fil’s FAQ-Link-In Corner: IDE Ref.
ATA/ATAPI Errata
Programming the PC’s IDE controller
OSDev.org’s AHCI (native SATA) page
SATA on Linux
Programming the PC’s SATA controller
VGA graphics Programming
High-res high-speed VESA tutorial
Game Programming and graphics programming
256-Color VGA Programming in C – Home
Graphics and sound – The Hornet Archive
Programming the PC’s video hardware
The PS/2 Keyboard Interface Programming the PC keyboard
PS/2 Mouse Interfacing Programming the PC mouse
Serial Links using RS-232 and RS-485 Serial port programming information
/pub/usenet/news.answers/pc-hardware-faq PC hardware Usenet FAQ

 

Networking

The TCP/IP Guide Comprehensive, detailed book (readable online for free) about the low-level implementation of TCP/IP

Beej’s Guide to Network Programming

Excellent general guide to TCP/IP networking and user-space network programming, library functions, etc.
The IP Protocol The IP networking protocol (you need to implement this before TCP, UDP, etc.)
DNS Protocol Good overview of DNS from a MS TechNet page
DNS (firewall.cx) Detailed breakdown of DNS queries and responses
Choosing an Ethernet NIC Some Linux-related general info about network cards

 

Graphics

Wikipedia’s JPEG page
Calvin Hass’s JPEG decoding pages
– Huffman coding
– MCUs
– Chroma subsampling
– JPEGsnoop (dumps JPEG data)
– Lossless rotation
– Lossless rotation of partial MCUs
Dr. Dobb’s JPEG-like image compression
JPEG image decoding and the JFIF file format
Wikipedia’s bicubic interpolation page
Wikipedia’s bilinear filtering page
Image resizing

 

Miscellaneous

RFC 1321 – The MD5 Message-Digest Algorithm The MD5 hashing algorithm (for passwords, etc.)
EFI: 64-bit System Design Documents and links describing EFI firmware, GPT partition tables, etc. from Microsoft

 

Visual Operating System