Master the fundamental concepts of bios & uefi programming through this focused micro-challenge.
Before an OS provides drivers, software interrupts reach firmware routines for video, keyboard, disk, and more. The calling convention puts the function number in AH and passes extra arguments in other registers. For example, INT 0x10 with AH=0x0E and AL='A' prints one teletype character and advances the cursor.
nasmLoading…
BIOS data areas at 0x0040:0000 hold equipment flags and keyboard buffer pointers. Interrupts work only in real mode unless you build v8086 thunks.
These interrupts trap through the IVT; once CR0.PE is set without virtual 8086, BIOS services are unsafe. Teletype output preserves cursor state across calls, which is why boot messages rarely manually track column numbers. Testing with QEMU -fda still routes INT 0x10 to the emulated VGA BIOS, so behavior matches physical hardware closely enough for learning.
You will use INT 0x10 and INT 0x16 to print text and echo keyboard input. This exercise requires following the register-based BIOS calling convention without any C library or OS syscall layer.
Demonstrate BIOS interrupt usage for input and output.
Requirements:
Three hints are available for this task, revealed one at a time inside the code workspace so you can struggle productively before seeing them.
All starter code and reference implementations are available for your local setup.
View on Github