User Tag List

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

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Оно конечно мы ранее уже выяснили за православный юниксовый SED, но поскольку вот это вот "SED вместо редактирования зависает" очень обидно было, я слепил адаптацию SED.COM от CP/M (экранный редактор). Ну как слепил, тупо записал код SED.COM поверх MED (МСХ-ный редактор с интегрированныйм эмулем CP/М) c офсетом описанным постом ранее. И оно заработало, я сам в шоке.
    Поскольку имя SED занято православной консольной STDIN/OUT утилитой, то гибрид, полученный в результате издевательста над MED и SED.COM, я обозвал как NANO (хелп к нему по-прежнему SED.HLP, и генерируемый файл состояния - SED.SYS). Прошу проверить.

    ЗЫ. Конечно есть ложечка дегтя: почему-то CP/M эмуль не отрабатывает сочетание клавишь CTRL+D, а это ни что иное как "курсор вправо", что весьма раздражает (влево, вверх и вниз работают). Пока что для перемещения вправо использую CTRL+U (или можно CTRL+Q D). Кто выяснит почему не работает CTRL+D получит медаль "за взятие Юзикс".
    Как я уже говорил, в исходном Uzix CPM-эмулятор линковался к каждому CPM-файлу, причем неперемещаемо, отчего ВСЕ файлы были размером 47к. И что бы запустить еще какой-то новый CP/Mфайл, его надо было таким же образом слепить с эмулятором получив 47-килобайтный гибрид. Коряво, вы скажете, и будете правы! Поэтому я всё переделал. Теперь эмулятор отдельно, а котлеты{зачеркнуто} CP/M-файлы отдельно (и их вообще не меняем, достаточно их тупо скопировать на файловую систему Юзикса и дать права на исполнение).

    Как всё работает:
    при старте приложения (вызов execve() ) Юзикс проверяет атрибут "исполняемый файл", байт 0C3h в первом байте кода файла (для всех), и имя файла на наличие 3-символьного расширения. Исполняемые бинарные файлы с 3-символьным (строго 3) расширением считаются файлами эмулятора и одновременно с загрузкой исполняемого файла в озу процесса, ищется грузится и эмулятор /usr/lib/emu.* (у эмулятора расширение ставится такое же как у исполняемого файла этого типа!). Т.е. для исполняемых файлов CP/M (у которых расширение .com) это будет /usr/lib/emu.com.

    Файл эмулятора в первых 6 байтах содержит:
    - сигнатуру "E",0C9h (0C9h чтобы при попытке выполнить его самостоятельно {а не запуском файла с нужным расширением} сразу происходил RET)
    - адрес загрузки в пространстве запускаемого процесса
    - стартовый адрес куда передается управление после загрузки исполняемого бинарника и бинарника эмулятора (обычно этот адрес внутри эмулятора).

    Эмуляторов (и эмулируемых окружений) может быть несколько и эмулятор указывать не надо, достаточно давать бинарям с других платформ соответствующие 3-символьные расширения в именах файлов (ну и конечно иметь нужный эмулятор в /usr/lib/).
    Пример запуска:
    sed.com text.txt # запустятся sed (на редактирование файла text.txt) и эмулятор CP/M /usr/lib/emu.com
    game.spc # запустятся игра и эмулятор Специалиста /usr/lib/emu.spc

    Поправленное - во вложении (и на GIT). Сегодня уже поигрался в King, Ladder ну и конечно же sed. Как добавить: ядро uzix.com кладем в образ в юзер0 вместо старого, остальное, предположим, в юзер 4 (диска С). А далее (внимательнее: первый get, затем все bget):

    idebdos {или idebdos sd}
    ucp 2:

    UCP>
    UCP> cd /usr/lib/
    UCP> get 4:c:liberror.txt
    UCP> bget 4:c:emu.com
    UCP> chmod 744 emu.com
    UCP> cd /bin
    UCP> bget 4:c:king.com
    UCP> bget 4:c:ladder.com
    UCP> bget 4:c:ladder.dat
    UCP> bget 4:c:sed.com
    UCP> bget 4:c:sed.hlp
    UCP> chmod 744 king.com
    UCP> chmod 744 ladder.com
    UCP> chmod 744 sed.com
    UCP> exit

    uzix 2:

    - - - Добавлено - - -

    А вот кстати вопрос. Какие интересные 8-битные платформы проца 8080/Z80, работающие через некую документированную керналь вызовов (т.н. "Монитор"), можно эмулировать в случае с Юзикс где свободное ОЗУ с 0000 (строго говоря с 0100H, но можно и с 0000) до 0E800h т.е. низшие 58кб? Вызовы в верхние 6кб недопустимы, т.е. отпадают РК-86 и Ордосовское от Ориона (т.к. эта недосистема не содержит в себе кернали для вывода на экран и ввода с клавиатуры, и всё ордосовское ПО лезет за этим прямо в МониторF800). Идеально получается CP/M (что уже сделано), и наверное Специалист с его ПЗУ Монитора с 0С000h (вроде) эмуляцию которого можно попробовать сделать. А что еще?
    Вложения Вложения
    Последний раз редактировалось Error404; 20.09.2018 в 12:18.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: 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

Ваши права

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