https://github.com/vs4vijay/vizix
An operating system for fun and learning.
https://github.com/vs4vijay/vizix
assembly bare-metal clang esp32 gcc kernel linux linux-kernel nasm operating-system os qemu raspberry-pi rust
Last synced: about 1 month ago
JSON representation
An operating system for fun and learning.
- Host: GitHub
- URL: https://github.com/vs4vijay/vizix
- Owner: vs4vijay
- License: mit
- Created: 2020-03-23T15:45:19.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2025-01-08T16:49:27.000Z (5 months ago)
- Last Synced: 2025-04-05T20:02:53.382Z (about 2 months ago)
- Topics: assembly, bare-metal, clang, esp32, gcc, kernel, linux, linux-kernel, nasm, operating-system, os, qemu, raspberry-pi, rust
- Language: Rust
- Homepage:
- Size: 2.93 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# VIZIX
An operating system for fun and learning
## Development Flow (Write an OS)
- Create Boot Sector
-## Development Tools Required
- qemu
- nasm
- gccPS: On Mac, Using homebrew: `brew install qemu nasm`
## Running
- `nasm -f bin Vizix.asm -o Vizix.bin`
- `qemu Vizix.bin`## Bootsector Example:
```
; Infinite loop
loop:
jmp loop; Fill with 510 zeros minus the size of the previous code
times 510-($-$$) db 0; Magic number
dw 0xaa55
```## Registers:
- General Purpose Registers:
- `ax`; Accumulator (EAX)
- `bx`; Base (EBX)
- `cx`; Counter (ECX)
- `dx`; Data (EDX)
- Stack Registers:
- `bp`; Base Pointer, Stores the base address of stack (EBP)
- `sp`; Stack Pointer, Stores the top address of stack, sp gets decremented (ESP)
- Pointer Registers:
- `si`; Source Index, (ESI)
- `di`; Destination Index, (EDI)
- `ip`; Instruction Pointer
- Segmentation: Obsolete memory protection technique
- Segment Register: Can be altered using registers
- `cs`; Code Segment; Can not be altered
- `ds`; Data Segment
- `ss`; Stack Segment
- `es`; Extra Segment
- `fs`, `gs`; General Purpose Segment
- Special Registers:
- `CR0,2,3`
- `DR0,1,2,3,6,7`
- `TR4,5,6,7`## Bootloaders:
- Geek Loading: Everything in Boot Record
- One-stage Loading
- Two-stage Loading: `GRUB` (GRand Unified Bootloader)### References:
- Little OS Book - https://littleosbook.github.io/
- https://wiki.osdev.org/Bare_Bones
- https://github.com/cfenollosa/os-tutorial
- https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf
- https://www.cs.cmu.edu/~410/
- https://wiki.osdev.org/Main_Page
- http://stanislavs.org/helppc/idx_interrupt.html
- https://legacy.gitbook.com/book/samypesse/how-to-create-an-operating-system/details
- https://samypesse.gitbook.io/how-to-create-an-operating-system/
- https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
- https://github.com/arjun024/mkernel
- http://3zanders.co.uk/2017/10/13/writing-a-bootloader/
- http://mikeos.sourceforge.net/write-your-own-os.html
- http://osblog.stephenmarz.com/index.html
- https://os.phil-opp.com/
- https://www.rpi4os.com/
- https://s-matyukevich.github.io/raspberry-pi-os/
- https://www.fysnet.net/osdesign_book_series.htm
- https://pages.cs.wisc.edu/~remzi/OSTEP/
- https://operating-system-in-1000-lines.vercel.app/en### Hardware
- https://eater.net/8bit/
- https://nand.arhan.sh/
- https://www.nand2tetris.org/
- https://nandgame.com/
- https://www.megaprocessor.com/
- https://gitlab.com/x653/nand2tetris-fpga/