Reference Materials =================== .. toctree:: :hidden: ------------- C programming ------------- - `The C programming language `__ - `Modern C `__ - `Learn C The Hard Way `__ ---- UNIX ---- - `The UNIX Operating System `__, AT&T Archives at YouTube - `The UNIX Time-Sharing System `__, Dennis M. Ritchie and Ken L.Thompson, Bell System Technical Journal - `The Evolution of the Unix Time-sharing System `__, Dennis M. Ritchie - `A Commentary on the Sixth Edition UNIX Operating System <_static/read/unix6.pdf>`__, John Lions ------------- x86 emulation ------------- - `QEMU `__ (`manual `__) - `Bochs `__ (`manual `__, `debugging `__) -------------------- x86 assembly anguage -------------------- - `PC Assembly Language `__, Paul A. Carter, November 2003. - `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 `__, - `Volume I: Basic Architecture <_static/read/ia32/IA32-1.pdf>`__ - `Volume 2A: Instruction Set Reference, A-M <_static/read/ia32/IA32-2A.pdf>`__ - `Volume 2B: Instruction Set Reference, N-Z <_static/read/ia32/IA32-2B.pdf>`__ - `Volume 2C: Instruction Set Reference, Safer mode extensions <_static/read/ia32/IA32-2C.pdf>`__ - `Volume 3A: System Programming Guide, Part 1 <_static/read/ia32/IA32-3A.pdf>`__ - `Volume 3B: System Programming Guide, Part 2 <_static/read/ia32/IA32-3B.pdf>`__ - `Volume 3C: System Programming Guide, Part 3 <_static/read/ia32/IA32-3C.pdf>`__ - Multiprocessor references: - `MP specification <_static/read/ia32/MPspec.pdf>`__ - `IO APIC <_static/read/ia32/ioapic.pdf>`__ - `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 `__ - `Inline assembly for x86 in Linux `__ - `GCC-Inline-Assembly-HOWTO `__ - Loading x86 executables in the ELF format: - `Wikipedia: ELF `__ - `Tool Interface Standard (TIS) Executable and Linking Format (ELF) <_static/read/elf.pdf>`__ ----------------------- 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: - `Wikipedia: BIOS `__ - `BIOS Services and Software Interrupts `__, Roger Morgan, 1997. - `"El Torito" Bootable CD-ROM Format Specification <_static/read/boot-cdrom.pdf>`__, Phoenix/IBM, January 1995. - VGA display - kern/console.c - `OS-Dev `__, `Wikipedia: VGA `__, `Wikipedia: CGA `__ - `Wikipedia: VESA `__, `VESA BIOS Extension (VBE) 3.0 `__, `Video Electronics Standards Association `__, September 1998. `(local copy) <_static/read/hardware/vbe3.pdf>`__ - VGADOC, Finn Thøgersen, 2000. `(local copy - text) <_static/read/hardware/vgadoc/>`__, `(local copy - ZIP) <_static/read/hardware/vgadoc4b.zip>`__ - `Free VGA Project `__, J.D. Neal, 1998. - Keyboard and Mouse - kern/console.c - `Adam Chapweske's resources `__. - 8253/8254 Programmable Interval Timer (PIT) - inc/timerreg.h - `82C54 CHMOS Programmable Interval Timer `__, Intel, October 1994. `(local copy) <_static/read/hardware/82C54.pdf>`__ - `Data Solutions 8253/8254 Tutorial `__, Data Solutions. - 8259/8259A Programmable Interrupt Controller (PIC) - kern/picirq.\* - `8259A Programmable Interrupt Controller <_static/read/hardware/8259A.pdf>`__, Intel, December 1988. - Real-Time Clock (RTC) - kern/kclock.\* - `Wikipedia:Nonvolatile BIOS memory `__ - `Phil Storrs PC Hardware book `__, Phil Storrs, December 1998. In particular: - `Understanding the CMOS `__ - `A list of what is in the CMOS `__ - `CMOS Map Table `__, `CMOS Map `__ (by Padgett Peterson, May 1996). - `M48T86 PC Real-Time Clock <_static/read/hardware/M48T86.pdf>`__ - 16550 UART Serial Port - kern/console.c - `Wikipedia: Serial port `__ - `PC16550D Universal Asynchronous Receiver/Transmitter with FIFOs `__, National Semiconductor, 1995. - `Technical Data on 16550 `__, Byterunner Technologies. - `Interfacing the Serial / RS232 Port `__, CraigPeacock, August 2001. - IEEE 1284 Parallel Port - kern/console.c - `Parallel Port Central `__, Jan Axelson. - `Parallel Port Background `__,Warp Nine Engineering. - `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 - [ATA8-ACS]: `AT Attachment 8 - ATA/ATAPI Command Set <_static/read/hardware/ATA8-ACS.pdf>`__, ANSI, May 2007. - `Programming Interface for Bus Master IDE Controller <_static/read/hardware/IDE-BusMaster.pdf>`__, 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!) - `Sound Blaster Series Hardware Programming Guide <_static/read/hardware/SoundBlaster.pdf>`__, Creative Technology, 1996. - `8237A High Performance Programmable DMA Controller <_static/read/hardware/8237A.pdf>`__, Intel, September 1993. - `Sound Blaster 16 Programming Document `__, Ethan Brodsky, June 1997. - `Sound Programming `__, Inverse Reality. - E100 Network Interface Card: - `Intel 8255x 10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual <_static/read/hardware/8255X_OpenSDM.pdf>`__ - `82559ER Fast Ethernet PCI Controller Datasheet <_static/read/hardware/82559ER_datasheet.pdf>`__ - E1000 Network Interface Card: - `PCI/PCI-X Family of Gigabit Ethernet Controllers Software Developer's Manual <_static/read/hardware/8254x_GBe_SDM.pdf>`__ - Booting: - `Multiboot `__ - `Minimal Intel Architecture Boot Loader <_static/read/miniboot.pdf>`__