The resources provided below are useful references for those interested in learning more about the topics covered in the course.
UNIX®
- Ritchie, Dennis M., and Ken L.Thompson. “The UNIX® Time-Sharing System.” Bell System Technical Journal 57, no. 6 part 2 (1974): 1905–30. You read this paper in 6.033.
- Ritchie, Dennis M. “The Evolution of the Unix® Time-sharing System.” 1984.
- Kernighan, Brian, and Dennis Ritchie. The C Programming Language. 2nd ed. Prentice Hall, 1988. ISBN: 9780131103627.
x86 Emulation
- QEMU—A fast and popular x86 platform and CPU emulator.
- Bochs—A more mature, but quirkier and much slower x86 emulator. Bochs is generally a more faithful emulator of real hardware than QEMU.
x86 Assembly Language
- PC Assembly Language, Paul A. Carter, July 2006.
- Intel® 80386 Programmer’s Reference Manual, 1987 (HTML®).
Much shorter than the full current Intel® Architecture manuals below, but describes all processor features used in 6.828. - IA-32 Intel® Architecture Software Developer’s Manuals, Intel®, 2007. Download the following manuals:
- Volume I: Basic Architecture
- Volume 2A: Instruction Set Reference, A–M
- Volume 2B: Instruction Set Reference, N–Z
- Volume 3: System Programming Guide
- Multiprocessor References:
- AMD64 Architecture Programmer’s Manual.
Covers both the “classic” 32-bit x86 architecture and the new 64-bit extensions supported by the latest AMD and Intel® processors. - Writing Inline Assembly Language with GCC:
- Brennan’s Guide to Inline Assembly, Brennan “Mr. Wacko” Underwood
- Inline assembly for x86 in Linux®, Bharata B. Rao, IBM®
- GCC-Inline-Assembly-HOWTO, Sandeep. S
- Loading x86 Executables in the ELF Format:
- Tool Interface Standard (TIS) Executable and Linking Format (ELF).
The definitive standard for the ELF format.
- Tool Interface Standard (TIS) Executable and Linking Format (ELF).
PC Hardware Programming
- General PC Architecture Information:
- Phil Storrs PC Hardware book, Phil Storrs, December 1998.
- Bochs technical hardware specifications directory.
- General BIOS and PC Bootstrap:
- BIOS Central
- BIOS Services and Software Interrupts, Roger Morgan, 1997.
- “El Torito” Bootable CD-ROM Format Specification, Phoenix / IBM®, January 1995.
- VGA Display - kern / console.c
- VESA BIOS Extension (VBE) 3.0 (PDF), Video Electronics Standards Association, September 1998.
- VGADOC, Finn Thøgersen, 2000.
- Free VGA Project, J. D. Neal, 1998.
- Keyboard and Mouse - kern / console.c
- 8253/8254 Programmable Interval Timer (PIT) - inc / timerreg.h
- 82C54 CHMOS Programmable Interval Timer, Intel®, October 1994.
- Data Solutions 8253/8254 Tutorial, Data Solutions.
- 8259/8259A Programmable Interrupt Controller (PIC) - kern / picirq.*
- 8259A Programmable Interrupt Controller, Intel®, December 1988.
- Real-Time Clock (RTC) - kern / kclock.*
- Phil Storrs PC Hardware book, Phil Storrs, December 1998. In particular:
- CMOS Memory Map, Padgett Peterson, May 1996. (TXT)
- M48T86 PC Real-Time Clock, ST Microelectronics, April 2004.
- 16550 UART Serial Port - kern / console.c
- PC16550D Universal Asynchronous Receiver / Transmitter with FIFOs, National Semiconductor, 1995.
- Technical Data on 16550, Byterunner Technologies.
- Interfacing the Serial / RS232 Port, Craig Peacock, August 2001.
- IEEE 1284 Parallel Port - kern / console.c
- Parallel Port Central, Jan Axelson.
- IEEE 1284 - Updating the PC Parallel Port, National Instruments.
- Interfacing the Standard Parallel Port, Craig Peacock, August 2001.
- IDE Hard Drive Controller - fs / ide.c
- AT Attachment with Packet Interface - 6 (working draft), ANSI, December 2001.
- Programming Interface for Bus Master IDE Controller, Brad Hosler, Intel®, May 1994.
- The Guide to ATA / ATAPI documentation, Constantine Sapuntzakis, January 2002.
- Sound Cards (not supported in 6.828 kernel, but you’re welcome to do it as a challenge problem!)
- Signal Processing using Sound Cards
- Sound Blaster Series Hardware Programming Guide (PDF), Creative Technology, 1996.
- 8237A High Performance Programmable DMA Controller, Intel®, September 1993.
- Sound Blaster 16 Programming Document, Ethan Brodsky, June 1997.
- E100 Network Interface Card
- Intel 8255x 10 / 100 Mbps Ethernet Controller Family Open Source Software Developer Manual
- 82559ER Fast Ethernet PCI Controller Datasheet
- E1000 Network Interface Card
- PCI / PCI-X Family of Gigabit Ethernet Controllers Software Developer’s Manual