Materials
Reference Materials
C Programming
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, John Lions
x86 Emulation
x86 Assembly Language
- 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 EE469.
-
IA-32 Intel Architecture Software Developer’s Manuals,
- Volume I: Basic Architecture
- Volume 2A: Instruction Set Reference, A-M
- Volume 2B: Instruction Set Reference, N-Z
- Volume 2C: Instruction Set Reference, Safer mode extensions
- Volume 3A: System Programming Guide, Part 1
- Volume 3B: System Programming Guide, Part 2
- Volume 3C: System Programming Guide, Part 3
-
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:
-
Loading x86 executables in the ELF format:
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, 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)
- VGADOC, Finn Thøgersen, 2000. (local copy - text), (local copy - ZIP)
- Free VGA Project.
-
Keyboard and Mouse - kern/console.c
-
8253/8254 Programmable Interval Timer (PIT) - inc/timerreg.h
- 82C54 CHMOS Programmable Interval Timer, Intel, October 1994. (local copy)
- Data Solutions 8253/8254 Tutorial
-
8259/8259A Programmable Interrupt Controller (PIC) - kern/picirq.*
- 8259A Programmable Interrupt Controller, Intel, December 1988.
- Real-Time Clock (RTC) - kern/kclock.*
-
16550 UART Serial Port - kern/console.c
-
IEEE 1284 Parallel Port - kern/console.c
-
IDE hard drive controller - fs/ide.c
-
Sound cards: (not supported in EE469 kernel, but you’re welcome to do it as a challenge problem!)
-
E100 Network Interface Card:
-
E1000 Network Interface Card:
-
Booting: