Project Type: Group (3 people)
Technology Stack: C#, Assembly (x86)
Role: Documentation Creator + Programmer
GitHub: Project Metro
Short Description
This project was part of the Undergraduate Research Opportunities Scheme (UROS) projects. The initial inspiration was to learn more about bootloaders and assembly code.
As the goal for the project team picked to create software that can take assembly code, compile it, convert it to ISO and still be able to run it on hardware. Additional goals were to unlock 32 and 64-bit modes and write snake game on assembly (16-bit version).
Are you interested in working with me?
Description in details
As I did not have any previous experience with assembly, my personal task was to learn it and write documentation to help other students in future. After learning some basics, I started working on a “Snake” game and at the same time helped other team members. After using reverse engineering and founding how ISO files were structured (more details may be found here) and created software that compiled assembly using NASM (assembler compiler) and converted it to ISO.
After learning more about BIOS interrupts and interaction with VGA, I had control over pixels and know how to light them in different colours. After I also added some “functions” based on user input. At the same time, other team members were able to unlock 32 and 64-bit modes using assembly code which may be found here.
As documentation priority was highest, I moved to it, without finishing the “Snake” game. Hopefully, I will finish the game one day 🙂
Overall, want to thank Kristaps Jurkans, Harry Rile and Charles Fox for the possibility to create such a project!