{"id":24736500,"url":"https://github.com/en10/bootloader","last_synced_at":"2026-02-12T05:08:28.702Z","repository":{"id":272006487,"uuid":"915248470","full_name":"EN10/Bootloader","owner":"EN10","description":"Simple Bootloader Project","archived":false,"fork":false,"pushed_at":"2025-01-13T18:04:11.000Z","size":47,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T11:36:18.869Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EN10.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-11T11:02:48.000Z","updated_at":"2025-01-13T18:04:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"c777b60c-bb1e-4915-8052-bac895ce94e7","html_url":"https://github.com/EN10/Bootloader","commit_stats":null,"previous_names":["en10/bootloader"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EN10/Bootloader","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EN10%2FBootloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EN10%2FBootloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EN10%2FBootloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EN10%2FBootloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EN10","download_url":"https://codeload.github.com/EN10/Bootloader/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EN10%2FBootloader/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272942399,"owners_count":25019329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-27T21:25:58.530Z","updated_at":"2026-02-12T05:08:28.628Z","avatar_url":"https://github.com/EN10.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple x86 Assembly Bootloader Examples\n\nThis is a basic x86 bootloader project that demonstrates the fundamentals of OS development. The bootloader prints \"Hello, World!\" to the screen using BIOS interrupts.\n\n## Project Structure\n\n- `hello_world.asm` - A bootloader that prints \"Hello, World!\" to the screen\n- `hello_world_func.asm` - Same as hello_world.asm but using a function call to print\n- `single_char.asm` - A minimal bootloader that prints a single character\n- `single_char_min.asm` - An even more minimal version of single_char.asm\n- `bochs_config.bxrc` - Configuration file for the Bochs emulator\n\n## Prerequisites\n\nTo build and run this project, you'll need:\n- FASM (Flat Assembler) for compiling the assembly code\n- Bochs x86 emulator for running the bootloader\n\n### Installing FASM\n\n1. Download FASM from the [official website](https://flatassembler.net/download.php)\n2. For Windows:\n   - Download \"flat assembler for Windows\" package\n   - Extract the zip file\n   - The package includes an integrated editor with syntax highlighting\n   - Documentation is provided in PDF format\n\n### Installing Bochs\n\n1. Download the latest Bochs release (currently 2.8) from the [official Bochs releases page](https://github.com/bochs-emu/Bochs/releases)\n2. For Windows:\n   - Download the .exe installer\n   - Either run the installer directly\n   - Or extract the files using 7-Zip if you prefer a portable installation\n\n## Building\n\nTo compile the bootloaders, run either:\n```bash\nfasm hello_world.asm hello_world.bin\n```\nor\n```bash\nfasm single_char.asm single_char.bin\n```\n\n## Running\n\nTo run a bootloader in Bochs, first update the bochs_config.bxrc file to point to the desired .bin file, then:\n```bash\nbochs -f bochs_config.bxrc\n```\n\n## Technical Details\n\nThe bootloader implements these key features:\n- Loads at memory address 0x7C00 (a fixed address chosen by IBM in 1981)\n- Runs in 16-bit real mode\n- Uses BIOS interrupt 0x10 with function 0x0E for teletype output, which automatically advances the cursor after printing\n- Uses `lodsb` instruction to efficiently load and process string bytes into AL register while auto-incrementing SI\n- Stores string characters using `db` (Define Byte) directive with a null terminator (0)\n- Uses null-terminated strings for text output processing\n- Implements an infinite loop after printing to prevent executing past our code\n- Fits within the required 512 bytes for boot sectors:\n  - Main code and data in first 510 bytes\n  - Automatically pads unused space with zeros\n  - Includes standard boot signature (0x55, 0xAA) in final 2 bytes, required by BIOS to mark the sector as bootable\n\n## References\n\n### Learning Resources\n- [Single Character Bootloader Tutorial](https://www.youtube.com/watch?v=KEUgzn_Owxs) - Tutorial for the single character bootloader implementation\n- [Writing a Simple Operating System — from Scratch](https://www.youtube.com/watch?v=EzjnaMGxFko) - Tutorial that inspired our Hello World bootloader implementation\n- [Concise Hello World Bootloader](https://www.youtube.com/watch?v=xFrMXzKCXIc) - A streamlined implementation of the Hello World bootloader\n- [OS Tutorial - Boot Sector Printing](https://github.com/cfenollosa/os-tutorial/tree/master/02-bootsector-print) - Detailed guide on implementing boot sector text printing, directly relevant to our Hello World implementation\n- [Writing a Simple Operating System from Scratch](https://web.archive.org/web/20241112015613/http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf) - The original source material that inspired the OS Tutorial series by cfenollosa\n\n### Assembly and FASM Documentation\n- [FASM Documentation](https://flatassembler.net/docs.php) - Official FASM documentation and manual\n\n### BIOS and Hardware References\n- [INT 10h - BIOS Video Services](https://stanislavs.org/helppc/int_10.html) - General documentation for BIOS video services\n- [INT 10,E - Write Text in Teletype Mode](https://stanislavs.org/helppc/int_10-e.html) - Documentation for the BIOS interrupt used for text output\n\n### Tools and Software\n- [Bochs Releases](https://github.com/bochs-emu/Bochs/releases) - Official Bochs emulator downloads\n\n## License\n\nThis project is open source and available under the MIT License. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fen10%2Fbootloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fen10%2Fbootloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fen10%2Fbootloader/lists"}