bootloaders icon indicating copy to clipboard operation
bootloaders copied to clipboard

Bootloader exploration

Bootloader fun

Code is buggy! Requires nasm and qemu (on macOS or Linux).

Example:

./scripts/build_and_run.sh snake

Notes

  • How DIV works: https://stackoverflow.com/questions/8021772/assembly-language-how-to-do-modulo
  • ASCII table: https://www.rapidtables.com/code/text/ascii-table.html
  • BIOS map: https://www.tau.ac.il/~flaxer/edu/course/processcontrol/BiosDataArea.pdf
  • BIOS map 2: http://www.techhelpmanual.com/93-rom_bios_variables.html
  • NASM user manul: https://nasm.us/doc/nasmdoc4.html
  • Interpreting arrow key presses: https://stackoverflow.com/questions/46754566/how-do-i-check-if-the-arrow-keys-are-pressed-in-assembly-16-bits-bare-bones
  • Reading from the key buffer: https://groups.google.com/g/alt.lang.asm/c/0ZM7qToF55w/m/yxuiA3ibrgEJ
  • Resetting the key buffer: https://retrocomputing.stackexchange.com/questions/9484/whats-the-fastest-way-to-ignore-keypresses
  • int 16h keyboard service API: https://stanislavs.org/helppc/int_16.html
  • int 10h video service API: https://stanislavs.org/helppc/int_10.html
  • another bio api: http://www.ctyme.com/intr/rb-0098.htm
  • snake in a tweet: https://www.quaxio.com/bootloader_retro_game_tweet/
  • bootloader tutorial: http://3zanders.co.uk/2017/10/13/writing-a-bootloader/
  • bootlaoder tutorial: https://www.briansteffens.com/2020/01/15/hello-world-from-a-bootloader.html
  • bootloader tutorial: https://www.ired.team/miscellaneous-reversing-forensics/windows-kernel-internals/writing-a-custom-bootloader
  • bootloader graphics: https://0x00sec.org/t/realmode-assembly-writing-bootable-stuff-part-5/3667
  • 2048 game bootloader: https://crocidb.com/post/bootsector-game/