Skip to content

UZIX is a UNIX Implementation for MSX (initially) and for Orion-128/PRO (this repo)

Notifications You must be signed in to change notification settings

serge-404/U.Z.I.X.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

U.Z.I.X.

UZIX is a UNIX Implementation for MSX (initially) and for Orion-128/PRO (this repo)

Инструментарий.

Для компиляции используется единственный по сею пору нормальный компилятор C для Z80 - HitеchC v3.09 образца 1987года: нативный CP/M компилятор, при желании всю сборку можно провести на самом Орионе. .

В дополнение к нему чтобы комфортно разрабатывать под РС использую:

файловый эмулятор CP/M под винду cpm.exe - он умеет возвращать винде код завершения HitechC, что нужно для make.
GNU make для автоматизации (пакетной) сборки проекта. Или аналог.
ProgrammersNotepad, где в проекте UZIX.pnproj (фактически - структурированном списке файлов) описал используемые файлы. На кнопку F8 можно настроить сборку по make (Tools->Options->Tools->Scheme C/C++ -> Add). Но чаще после внесения всех правок в PN, я просто запускаю make под cmd.
Для компиляции драйвера IDE/SD использую пакет макроассемблера M80/L80 от Микрософт, тоже 80-х годов прошлого столетия - поныне лучший макроассемблер для Z80/8080.

Комплект компилятора в сборе (без ProgrammersNotepad): https://github.com/serge-404/HI-TECH-C-V3.09

На каталог куда вы распакуете файлы компилятора должны быть настроены переменные окружения PATH и CPMPATH

Концепция. Ядро UZIX - это обычная CP/M-задача, которая будет "крутить" UNIX-процессы в расширенном ОЗУ. Архитектура будет такая:

         CP/M 64k bank      Subsequent 64k banks
FFFF    +------------+       +------------+
Common  |   Common   |       |   Common   |+
F000    +------------+       +------------+|+
        |    CP/M    |       |            |+|+
E800    +------------+       |  Process   ||+|
Banked  |    UZIX    |       |    Code    |||+
        |   Kernel   |       |   & Data   ||||
        |    code    |       |            ||||
0100    +------------+       +------------+|||
        |  Reserved  |       |  Reserved  |+||
0000    +------------+       +------------+|+|
                              +------------+|+
                               +------------+|

В блоке общего ОЗУ COMMON размещаются части, которые должны быть общими у ядра и процессов (udata, стеки, некоторые переменные) и подпрограммы для межстраничного копирования, межстраничного JP/CALL/RET, вектор IM2 и начальный обработчик прерывания. Там же сидят порты (1к), и 2к ROM F800 в принципе ненужного для uzix, съедая 3к драгоценного ОЗУ, но так уж устроен Орион.

Ядро пока 29кб. Пишу для Орионовского клона CP/M АльтаирДОС с TPA до 58 кб, т.е. хватит места и TCP/IP впилить, и поддержку ФС FAT.

В страницах процессов сразу "из коробки" есть недоэмулятор CP/M: эмулируется CP/M консоль (ввод-вывод на экран/с клавиатуры) - BDOS функции 1..12, BIOS функции 2..4, остальные функции BDOS (дисковые в-основном) возвращают FF-нет файла. Т.е. будет работать любое корректное ПО CP/M не лезущее в диски, например ASCII-игры, программы типа "hello world" и т.п. В планах полный эмулятор CP/M, уже внешний - загружаемый.

В качестве дисков используется IDE/SD через CP/M-овский драйвер "сырого доступа" IDEBDOS, схема MBR-партиций (поддерживаются только 4 основные партиции на двух физических приводах - итого 8 (fd0..fd7) партиций, плюс fd8..fd9 - целые "сырые" диски (от LBA0=MBR до LBAmax)), номер партиции передается в утилиты (проверяемая/копируемая/где создается FS) и в ядро (root-партиция, остальные через mount) как параметр командной строки.

Из общего архива исходников собирается и ядро (idebdos.com, uzix.com) и утилиты (набор BD.COM, FSCK.COM, MKFS.COM, UCP.COM; или отдельно fdisk.com). Сборка проходит за 15 секунд. Собирается так:

правим мakefile - изменяем так: "DEFINES = -DORI_UTIL", или так: "DEFINES = -DORI_UZIX", или так: "DEFINES = -DORI_FDISK", в зависимости от того утилиты, ядро или fdisk компилируются соответственно.
запускаем cmd, переходим (cd) в каталог где лежат исходники
cmd> make clean & REM удаляем объектники - их всегда(!) надо пересобирать
cmd> make kernel & REM или "make utils" или "make fdisk.com" - смотря что в DEFINES

About

UZIX is a UNIX Implementation for MSX (initially) and for Orion-128/PRO (this repo)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published