Operating Systems from scratch – Part 1