tabs/README.md

50 lines
1.8 KiB
Markdown
Raw Normal View History

2020-01-27 23:25:31 +01:00
# TABS
2020-01-02 12:17:22 +01:00
2020-01-27 23:25:31 +01:00
Totaal Arbitrair BesturingsSysteem, Zeus maakt een besturingssysteem!
2020-01-02 12:17:22 +01:00
2020-01-09 12:21:21 +01:00
## How to use
To compile, you need:
- `i686-elf-gcc` for cross-compiling the kernel
- A system `gcc` for compiling the host-helpers
- `nasm` for compiling the bootloader
- `qemu-system-i386` for emulating (`qemu-system-x86_64` will probably work too, but that is not directly supported)
2020-01-27 23:59:30 +01:00
More information about installing a cross compiler can be found [here](https://wiki.osdev.org/GCC_Cross-Compiler#The_Build).
2020-01-09 12:21:21 +01:00
If you run `make bin`, it will generate `target/boot.bin`, this is a binary file layed out as described in [the docs](docs/bootloader.md). To burn it on a USB drive, simply `dd if=target/boot.bin of=/dev/sdb` and the drive is bootable and contains an SFS filesystem with the files in `filesystem/`.
2020-01-28 04:59:04 +01:00
In case there are errors in the bootloader you can use `make compile_kernel` to only compile the kernel.
To run TABS in the qemu simulator run `make run`.
2020-01-02 12:17:22 +01:00
## Bootloader
The bootloader is self-written, based on articles on [the OSDev wiki](https://wiki.osdev.org/). It's a single stage, ELF-loading bootloader in the most basic way possible.
More info in [the docs](./docs/bootloader.md)
## Kernel
2020-01-07 15:00:23 +01:00
The kernel is based on [the bare bones kernel from the OSDev wiki](https://wiki.osdev.org/Bare_Bones).
2020-01-03 11:38:43 +01:00
2020-01-07 15:00:23 +01:00
### Features
- [x] Terminal output (with newlines!)
- [x] _Very_ basic (and probably broken) memory management
2020-01-09 12:06:45 +01:00
- [x] Interrupt handling
- [x] Keyboard input
2020-01-09 16:27:19 +01:00
- [x] Exception handling
- [x] Minimal shell
2020-01-07 15:00:23 +01:00
- [ ] Filesystem interaction
2020-01-09 12:21:21 +01:00
- [ ] Show files in directory
- [ ] Read files in directory
- [ ] Write files in directory
- [ ] Tests
- [ ] Running executables from filesystem
2020-01-07 15:00:23 +01:00
- [ ] Better memory management
- [ ] Better shell
2020-01-07 15:00:23 +01:00
As a test, I've implemented day 1 of [advent of code](https://adventofcode.com/) on the [AoC branch](https://github.com/Robbe7730/RoBoot/tree/AoC).