Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/flydeoo/mya

a fun project to create OS from scratch
https://github.com/flydeoo/mya

cprogramming-language operating-system x86assembly

Last synced: 5 days ago
JSON representation

a fun project to create OS from scratch

Lists

README

        

# what is mya


mya

**`mya`** is a fun project to create a tiny OS from scratch using **x86 assembly** and **C programming language**.



# how to use
You can either read each episode from the [doc section](#docs) or [Medium](#other-media).

For each episode that includes code, there is a corresponding [release](https://github.com/flydeoo/mya/releases) with the same name as the episode.




# docs

- [episode 0: introduction to the journey of making tiny OS](https://github.com/flydeoo/mya/blob/main/docs/episode%200%3A%20introduction%20to%20the%20journey%20of%20making%20tiny%20OS.md)


![Static Badge](https://img.shields.io/badge/concepts-%20-blue)

[`introduction`]






- [episode 1: my understanding of CPU and Memory interaction](https://github.com/flydeoo/mya/blob/main/docs/episode%201%3A%20my%20understanding%20of%20CPU%20and%20Memory%20interaction.md)


![Static Badge](https://img.shields.io/badge/concepts-%20-blue)

[`the need for labels`, `era of uni programming and multiprogramming`, `linker and Hardware/software based relocation`, `segmentationm`, `OS loader`]






- [episode 2: write our very first tiny bootloader](https://github.com/flydeoo/mya/blob/main/docs/episode%202%3A%20write%20our%20very%20first%20tiny%20bootloader.md)


![Static Badge](https://img.shields.io/badge/concepts-%20-blue)

[ `flat binary`, `assembler base address`, `org directive`, `far jump` ]


![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
[ `writing a simple bootloader`, `using bios interrupt 0x10`, `qemu kickstart` ]






- [episode 3: Tracing Stack and Function Calls with GDB](https://github.com/flydeoo/mya/blob/main/docs/episode3%3A%20Tracing%20Stack%20and%20Function%20Calls%20with%20GDB.md)


![Static Badge](https://img.shields.io/badge/concepts-%20-blue)

[ `stack registers: SS, SP, BP` ]


![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
[ `start using GDB`, `define stack`, `add some functionality to bootloader`, `start using makefile`, `trace stack` ]






- [episode 4: CPU interaction with memory and IO](https://github.com/flydeoo/mya/blob/main/docs/episode%204%3A%20CPU%20interaction%20with%20memory%20and%20IO.md)


![Static Badge](https://img.shields.io/badge/concepts-%20-blue)

[ `cpu interaction with RAM and ROM via address and control bus`, `CPU address space`, `binary black magic`, `Memory mapped I/O`, `Isolated mapped I/O` ]






- [episode 5: switch to protected mode](https://github.com/flydeoo/mya/blob/main/docs/episode%205%3A%20switch%20to%20protected%20mode.md)


![Static Badge](https://img.shields.io/badge/concepts-%20-blue)

[ `Global Descriptor Table (GDT)`, `CHS addressing`, `absolute vs relative addressing`, `protectd mode` ]


![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
[ `writing second stage bootloader`, `implementing GDT`, `switch to protected mode`, `using bios interrupt 0x13 and CHS` ]






- [episode 6: migrate preparation](https://github.com/flydeoo/mya/blob/main/docs/episode%206%3A%20migrate%20preparation.md)


![Static Badge](https://img.shields.io/badge/concepts-%20-blue)

[ `why migrate to c` ]


![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
[ `build toolchain (GCC, linker, assembler)` ]






- [episode 7: migrate to C](https://github.com/flydeoo/mya/blob/main/docs/episode%207%3A%20migrate%20to%20C.md)


![Static Badge](https://img.shields.io/badge/concepts-%20-blue)

[ `linker script`, `compiler and linker options: -nostdlib -lgcc -ffreestanding` , `C compilation environment: Freestanding and Hosted`, `C call conventions` ]


![Static Badge](https://img.shields.io/badge/accomplishments-%20-green)
[ `writing linker script`, `migrate from assembly to C`, `start writing kernel with C` ]






# Upcoming episodes

> More episodes will be determined soon.

# other media

You can also access these episodes on Medium via this link: [flydeoo](https://medium.com/@thisisflydeoo)