Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tatskaari/zigzag
An operating system written from scratch in Zig
https://github.com/tatskaari/zigzag
Last synced: 24 days ago
JSON representation
An operating system written from scratch in Zig
- Host: GitHub
- URL: https://github.com/tatskaari/zigzag
- Owner: Tatskaari
- License: unlicense
- Created: 2024-08-09T18:27:03.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-08-29T13:31:14.000Z (2 months ago)
- Last Synced: 2024-08-29T20:28:33.592Z (2 months ago)
- Language: Zig
- Size: 799 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# zigzag is an operating system with a terrible name
It's written from scratch, with love, in zig.## Roadmap
Currently trying to figure out the feature set needed to port binutils and a shell (zsh maybe?).
The feaures are loosely:
- A userspace
- A TTY implementation
- A libc port (should be easy enough once we have a posix like abi)
- A filesystemThe roadmap to achieve this is:
- [x] VGA graphics mode
- [x] VGA terminal
- [x] Initialise the interrupt descriptor table
- [x] MoreCore allocator
- [x] Configure the GDT with kernel and user segments for long mode
- [x] Read the root system descriptor table
- [x] Read the MADT
- [x] APIC setup
- [x] PS/2 Keyboard input
- [x] PIT timer
- [x] Paging: allocating pages and mapping them to virtual addresses
- [x] Paging: mmap and a std.heap.PageAllocator
- [x] Lapic timer
- [x] Scheduler (basic scheduling of threads)
- [ ] Set up the TSS and get exceptions handled from threads
- [ ] Implement wait, yield and sleep
- [ ] Implement an event queue and terminal thread that listens to keyboard events
- [ ] Run lspci from the keybaord listener as a thread
- [ ] Implement the proc/sys filesystems for pci devices
- [ ] Processes and elf loading: move lspci out into its own binary
- [ ] Basic userspace + entrypoint
- [ ] Syscall ABI for memory mapping
- [ ] Filesystem service for embedded tar
- [ ] Keyboard service
- [ ] TTY service
- [x] PCI device discovery
- [ ] SATA/IDE driver
- [ ] Read/write FAT-32 filesystem (over IDE)
- [ ] Open and write syscalls
- [ ] Create a standard library for userspace programmes
- [ ] Exec syscall
- [ ] Fork syscall