Skip to content

Lab Track

The lab track teaches machine-facing C through small device-shaped exercises. Each lab is split into:

  • overview: what the device model is;
  • tasks: what you implement and what gaps are intentionally left;
  • check: commands, prompts, and external reading.

Sequence

LabDevice ideaCheck
Lab 1bit masks, CMOS/RTC, BCDmachinelab test rtc
Lab 2PIT divisors and timer IRQsmachinelab test timer
Lab 3i8042 keyboard and scancodesmachinelab test kbd
Lab 4PS/2 mouse packetsmachinelab test mouse
Lab 5VBE framebuffer and spritesmachinelab test graphics
Lab 6AC97-lite PCM audiomachinelab test audio
Lab 716550 UART and serial protocolsmachinelab test uart

Guide Style

Each lab now has more than a task list:

  • history and motivation;
  • controller model;
  • protocol steps;
  • implementation tasks;
  • checks and discussion prompts;
  • external reading;
  • "how it works today" notes for modern systems.

The goal is to teach why the old PC-shaped interface works, why it looked that way, and which ideas still transfer to modern MMIO, APIC/MSI, HID, GPU, audio, and serial stacks.

Method

  1. Read the overview.
  2. Run the failing starter test.
  3. Implement the requested functions.
  4. Keep reusable helpers small.
  5. Produce one artifact: test output, screenshot, WAV, trace, or replay.

TIP

Fresh stubs are expected to fail. The first failure is the starting point, not evidence that setup is broken.

Course/docs licensed CC BY 4.0. Code licensed MIT.