Metadata-Version: 2.5
Name: python-osdev
Version: 0.1.0
Summary: OSDev toolkit for Windows: one command — full bare-metal toolchain (Zig, NASM, QEMU, GDB) and a working i686 kernel. No WSL, no pain.
Project-URL: Homepage, https://github.com/fayka2284252-ui/osdev
Project-URL: Repository, https://github.com/fayka2284252-ui/osdev
Project-URL: Issues, https://github.com/fayka2284252-ui/osdev/issues
Project-URL: Changelog, https://github.com/fayka2284252-ui/osdev/blob/main/CHANGELOG.md
Author: fayka2284252-ui
License: MIT
License-File: LICENSE
Keywords: bare-metal,kernel,nasm,operating-system,osdev,qemu,windows,zig
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Operating System Kernels
Requires-Python: >=3.10
Requires-Dist: rich>=13.7
Requires-Dist: typer>=0.12
Description-Content-Type: text/markdown

![CI](https://github.com/fayka2284252-ui/osdev/actions/workflows/ci.yml/badge.svg)
![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)
![Platform: Windows](https://img.shields.io/badge/platform-Windows-0078D6.svg)

# osdev
**Инструмент для разработки операционных систем на Windows — без WSL, без MSYS2, без кросс-компилятора.**

Одна команда — и у тебя есть весь тулчейн: компилятор C/C++ для bare-metal,
ассемблер, линкер, эмулятор и отладчик. Всё нативно под Windows.

## Зачем

Классический путь OSDev на Windows выглядит так:

- поставить WSL или MSYS2,
- собрать `i686-elf-gcc` (полдня),
- разобраться с `xorriso`, `grub-mkrescue`, `mtools`,
- писать Makefile,
- ловить странные ошибки путей.

`osdev` убирает всё это. Ты пишешь `kernel.c`, нажимаешь `osdev run` и видишь
своё ядро в QEMU через 5 секунд.

## Быстрый старт

```cmd
:: 1. поставить тулчейн (один раз)
osdev setup

:: 2. проверить, что всё на месте
osdev doctor

:: 3. создать проект
osdev new myos
cd myos

:: 4. собрать и запустить
osdev run
```

В окне QEMU появится:

```
Hello from osdev!
i686, protected mode, C kernel.
```

## Команды

| Команда | Что делает |
|---|---|
| `osdev doctor` | Проверить, что установлено (Zig, NASM, QEMU, GDB) |
| `osdev setup` | Скачать и распаковать тулчейн в `~/.osdev/tools/` |
| `osdev new <name>` | Создать новый проект ОС из шаблона |
| `osdev build` | Собрать образ (`build/<name>.img`) |
| `osdev run` | Собрать и запустить в QEMU |
| `osdev debug` | Собрать и запустить под GDB (с брейкпоинтом на `kernel_main`) |

### `osdev debug` — что попробовать в GDB

```
(gdb) info registers        # состояние регистров
(gdb) x/10i $pc             # дизассемблер вокруг текущей инструкции
(gdb) si                    # шаг
(gdb) c                     # продолжить
(gdb) q                     # выход
```

## Требования

- **Windows 10/11**
- **Python 3.10+**

Больше ничего. Zig, NASM и QEMU `osdev setup` поставит сам.
GDB нужен только для `osdev debug` (можно взять из mingw-w64).

## Что внутри

```
osdev/
├── cli.py            # команды Typer
├── detect.py         # поиск тулчейна в ~/.osdev/tools и в системе
├── doctor.py         # вывод таблицы
├── setup.py          # скачивание NASM, Zig
├── build.py          # сборка ядра: nasm → zig cc → ld.lld → .img
├── errors.py         # человеческие подсказки к ошибкам компилятора
└── templates/
    └── i686-c-mbr/   # шаблон: свой bootloader + C-ядро
```

### Что делает `osdev build`

1. `nasm -f bin src/boot.asm -o build/boot.bin` — 512-байтный MBR.
2. `zig cc -target x86-freestanding-none -c src/kernel.c` — объектник.
3. `zig cc ... -fuse-ld=lld -T src/linker.ld` — линковка в ELF.
4. Python извлекает загружаемые секции → `kernel.bin`.
5. Склеивает `boot.bin + kernel.bin` → `build/<name>.img` (1.44 MB).

## Стек тулчейна

| Задача | Инструмент | Почему |
|---|---|---|
| C/C++ компилятор | **Zig (`zig cc`)** | Один бинарник, включает clang + lld + freestanding headers. Не нужен кросс-gcc. |
| Ассемблер | **NASM** | Стандарт для OSDev, 16-bit + 32-bit + 64-bit. |
| Линкер | **ld.lld** | Внутри Zig. |
| Эмулятор | **QEMU** | i386, x86_64, ARM — всё в одном пакете. |
| Отладчик | **GDB** | Подключается к QEMU через `-gdb tcp::1234`. |

## Roadmap

- [x] CLI + `doctor` + `setup` (NASM, Zig)
- [x] `new` + `build` + `run` + `debug`
- [x] Шаблон `i686-c-mbr`
- [x] Человеческие подсказки к ошибкам (`errors.py`)
- [ ] Шаблон `i686-cpp-mbr`
- [ ] Шаблон `i686-c-printf` (своя мини-реализация printf)
- [ ] Шаблон `x86_64-c-mbr` (long mode, page tables)
- [ ] Обработка прерываний (IDT, PIC, клавиатура)
- [ ] ARM (`aarch64`)
- [ ] GUI поверх CLI

## Лицензия

MIT.