CS 630: Advanced Microcomputer Programming (Spring 2004)

Lecture: Monday-Wednesday 5:15pm-7:00pm (235 Harney Science Center)

Instructor: Allan Cruse
Email: cruse@usfca.edu
Phone: (415) 422-6562
Office: 212 Harney Science Center
Office Hours: (see my homepage)


This course explores fundamental capabilities of Intel's Pentium
microprocessor, regarded as a "bare machine" for which the basic
software components of an operating system are to be constructed
in a context of standard PC-BIOS firmware and peripheral devices.

Topics appropriate to this goal include:
- crafting a bootstrap loader
- identifying the processor model and stepping
- segmented real-mode memory-addressing
- device detection and initialization
- the CMOS memory and real-time clock
- keyboard, monitor, and interval-timers
- the programmable interrupt controllers
- floating-point, mmx, and simd instructions
- building protected-mode segment-descriptors
- entering and leaving 16-bit or 32-bit protected-mode
- creating exception-handlers and interrupt-descriptors
- building page-tables for virtual-memory support
- processor mechanisms for multitasking and debugging
- emulation of the legacy 8086 execution environment
- initialization and communication among multiple CPUs
- system management mode and performance monitoring counters

Throughout the course small software-component prototypes will be
written using the GNU/Linux program development tools (including
assemblers and C/C++ compilers). The course is open to graduate
students in computer science (and to qualified undergraduates if
the Instructor has granted permission). Students are assumed to be
familiar with Linux or UNIX, and with programming in C and in
x86 assembly language.

Learning Outcomes:

Class meetings will be held in the Michael D. Kudlick computer classroom
(Room 235, Harney Science Center) which affords convenient opportunities
for combining formal instruction with "hands-on" programming exercises.
This facility, a gift of USF alumnus Alfred S. Chuang ('82), opened in Fall 2002.






Last updated on 08/17/2004