Операционная система os8088 загружается с первого сектора дискеты сразу в графический рабочий стол. Никакого DOS под ней и никакой командной строки внутри — 512-байтовый загрузочный сектор поднимает 40-килобайтное ядро, которое определяет установленный в машине видеоадаптер, переключает его в графический режим, заимствует у видеокарты собственный шрифт 8x8 и выводит строку меню.
Дальше — интерфейс, знакомый по Macintosh 1984 года: окна, которые перетаскиваются за заголовок с рамкой-резинкой, выпадающие меню, кнопки закрытия и сворачивания, иконки для каждого дисковода и док внизу экрана с одной плиткой на каждую запущенную программу. Программы загружаются со второй дискеты и работают как полноценные приложения, причём одновременно может быть запущено несколько.
Всё это помещается в 256 КБ оперативной памяти процессора Intel 8086 или 8088 — тех самых, что стояли в оригинальном IBM PC и PC/XT. Это хобби-проект, но уже достаточно завершённый, чтобы им можно было пользоваться, а исходный код — 112 792 строки на NASM, которые можно прочитать за один вечер.
По цифрам
Каждая цифра ниже взята непосредственно из сборки, а не по памяти.
| Размер ядра | 78 950 байт | Планировщик, оконный менеджер, драйвер VGA, драйвер мыши, звуковой слой, файловый менеджер, загрузчик, Task Manager и Control Panel — всё вместе. |
|---|---|---|
| Загрузочный сектор | 512 байт | Трансляция LBA в CHS и повторные попытки чтения дискеты через BIOS. Сборка завершится ошибкой, если получится что-то другое. |
| Занимаемый сегмент | 53 842 байта | Код плюс все буферы, к которым ядро обращается через DS. Должен помещаться в 64 КБ сегмент — сейчас запас составляет 11 694 байта. Стеки задач, дисковые буферы и все загруженные программы находятся за пределами сегмента и здесь не учтены. |
| Строк ассемблера | 112 792 | Реальный режим 8086, написан с использованием ИИ. Без C, без линковщика, без библиотеки времени выполнения. |
| Дисплей | VGA, Hercules или CGA | Определяется при загрузке. VGA-режим 12h — 640x480 в 16 цветах, четыре 1-битные плоскости по 80 байт на строку; Hercules — 720x348, CGA — 640x200, оба монохромные и постраничные. На всех трёх рисование идёт прямо в кадровый буфер. |
| Двойная буферизация | опционально, по умолчанию выключена | Внеэкранная копия экрана занимает 153 600 байт — больше половины памяти машины, поэтому система с 256 КБ всегда рисует прямо на экран, как это делал Macintosh 1984 года. При 500 КБ и более Control Panel может включить буферизацию. |
| Задачи | 12 слотов, стек по 1536 байт | Каждое окно Clock и Bounce — отдельная вытесняемая задача. |
| Частота переключения контекста | 18,2065 Гц | Штатная частота таймера PC. На каждом тике обработчик сохраняет девять регистров, меняет указатель стека и возвращает управление в другую программу. |
| Загружаемые программы | отдельный сегмент на каждую | Пакеты загружаются со второй дискеты в собственные области обычной памяти — около 107 КБ арены на машине с 512 КБ, 233 КБ при 640 КБ — несколько программ могут быть резидентны одновременно, каждая освобождает память при закрытии. |
| Мышь | 1200 бод, 7N1 | Последовательная мышь Microsoft на COM1, три байта на отчёт, декодируется в обработчике прерывания, который же рисует курсор. |
| Целевое железо | IBM PC/XT, 8088 на 4,77 МГц | 256 КБ ОЗУ, последовательная мышь и любая из карт VGA, Hercules или CGA. Перерисовка достаточно медленная, чтобы наблюдать за процессом. |
| Набор инструкций | только 8086, принудительно | cpu 8086 плюс -w+error, поэтому что-либо новее приводит к ошибке сборки. Набор инструкций 1978 года, гарантированный механически. |
Что она умеет
Четыре вещи, в которых система действительно хороша.
История, с которой она спорит
В феврале 1985 года компания Digital Research выпустила GEM 1.0 для IBM PC — рабочий стол в стиле Macintosh с перекрывающимися окнами и иконками, работающий на стандартном железе XT. Apple подала в суд. Мировое соглашение привело к GEM Desktop 2.0 в 1986 году, из которого убрали перекрывающиеся окна и иконки рабочего стола на PC — при этом версия для Atari ST, не подпадавшая под соглашение, сохранила и то, и другое.
Так что у PC ненадолго была подобная возможность, а затем она исчезла. Os8088 — это воссоздание примерно той же идеи с нуля, сорок лет спустя, на технике того же класса — плюс вытесняющая многозадачность, которой не было ни у GEM, ни у Macintosh того времени.
Чем она не является
- Это не DOS, и она не запускает DOS-программы. Никакого DOS под капотом нет — система владеет машиной начиная с загрузочного сектора.
- У неё нет защиты памяти. У 8086 её попросту нет — все программы делят один 64-килобайтный сегмент с ядром, что как раз и делает переключение контекста достаточно дешёвым, чтобы имело смысл его выполнять.
- Нет файловых дескрипторов и позиционирования внутри файла. Дисковый API оперирует целыми файлами за раз — запись, чтение, удаление, переименование — это самое широкое подмножество операций, которое остаётся корректным без дискового кэша и при двенадцати вытесняемых задачах.
- Нет сети.
- Это хобби-проект, а не продукт. При этом он достаточно завершён, чтобы сесть и начать пользоваться — в этом весь смысл.
Работает на настоящем железе
Всё показанное выше снималось в эмуляторе. В августе 2026 года образы дисков записали на настоящие дискеты и загрузили на трёх машинах эпохи — IBM 5150 1981 года, Toshiba T1100 Plus и 286-й — и сфотографировали результат.
Попробовать
Демонстрация в браузере загружает настоящий образ дискеты в эмулированном PC — те же самые байты, что записываются на реальный диск. Для самостоятельного запуска доступны 360-килобайтные образы для техники той эпохи и 86Box, а также 1,44-мегабайтные образы для QEMU.