Важная информация

User Tag List

Показано с 1 по 10 из 217

Тема: Техраздел UZIX

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Техраздел UZIX

    Здесь буду вести бложек по портированию UZIX (реализация UNIX близкая к клаcсической V7) - всякие промежуточные итоги и мысли фиксировать.

    Инструментарий.
    • Для компиляции используется единственный по сею пору нормальный компилятор 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 и эмулятора CP/M использую пакет макроассемблера M80/L80 от Микрософт, тоже 80-х годов прошлого столетия - поныне лучший макроассемблер для Z80/8080.


    Комплект компилятора в сборе (без ProgrammersNotepad):
    Размер: 3.24 Мб
    Ссылка для скачивания: 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    |		|            |+|+
    		+------------+		|  Process   ||+|
        Banked	|   Kernel   |		|    Code    |||+
    		|    Code    |		|   & Data   ||||
    		|            |		|            ||||
    	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 партиций, на двух RAW (от LBA0=MBR до LBAmax)) дисках: fd8{партиции fd0,fd2,fd4,fd6} и fd9{партиции fd1,fd3,fd5,fd7}, номер партиции передается в утилиты (проверяемая/копируемая/где создается файловая система) и в ядро (root-партиция, остальные через mount) как параметр командной строки.

    Исходники размещены на GitHub.
    Из общего архива исходников собирается и ядро (idebdos.com, emu.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


    ПРОЧЕЕ

    Как компилировать приложения под UZIX описано тут

    Oбраз диска тут:
    http://zx-pk.ru/showpost.php?p=776311&postcount=38 - файл ohi-uzix.7z
    Плюс более свежая версия:
    https://drive.google.com/open?id=0B3...XgwZE9Ebnh6eHc

    Пояснение по работе с WIN-утилитами смотрите тут:
    http://zx-pk.ru/showthread.php?t=9589

    Плагины TotatlCommander/DoubleCommander для работы с образами дисков:
    https://zx-pk.ru/threads/24501-tekhr...=1#post1013490

    Утилиты Линукс для работы с файловыми системами UZIX:
    https://github.com/marioaugustorama/UXU

    ЧАВО:

    как засунуть файлы в образ карты (файловую систему Юзикса)

    Как запускать программы от CP/M в UZIX


    Ранее:
    20.09.2108: Причесал концепцию и код встроенного эмулятора CP/M. Читать тут и тут
    05.09.2018: Выложил на GIT утилиты под Винду для работы с образами дисков UZIX, как и имевшиеся у меня оригинальные исходники и образы дисков с MSX.
    06.10.2016: Исходники ядра и утилит теперь на GitHub (полный пак с libc, app).
    06.02.2015: Сделано все чтобы собиралась LIBC. Надо браться за приложения. Рабочие бинари от UZIX что работают без ошибок, пересобирать не планирую - интереснее наваять что-нибудь свое (или собрать недостающие бинари из исходников). Отчет о LIBC тут: http://zx-pk.ru/showpost.php?p=780032&postcount=61
    23.01.2015: Сделано все что хотел и что было в ядре uzix 1.0, готовность ядра 99% Размер ядра - 30к.
    19.01.2015: замедлитель ввода, полный пак файлов на одну большую партицию UZIX (более сотни команд + маны + ...)
    17.01.2015: работосопособный многозадачный промежуточный ночной снапшот исходников, готовность ядра оцениваю в 90%
    07.01.2015: получена работоспособная немногозадачная версия, готовность ядра оцениваю в 70%
    24.11.2014: изначально несобиравшиеся исходники ядра доведены до компилируемости
    хх.11.2014: подготовлена среда сборки (ProgrammersNotepad/HitechC/CpmEmu)
    Последний раз редактировалось Error404; 06.06.2019 в 13:06. Причина: удалены вложения с исходниками т.к. на github всегда последняя версия
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 0
    Последнее: 24.02.2009, 12:31
  2. и еще раз о uzix
    от sysop в разделе Оси
    Ответов: 33
    Последнее: 25.08.2006, 14:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •