User Tag List

Страница 6 из 9 ПерваяПервая ... 23456789 ПоследняяПоследняя
Показано с 51 по 60 из 87

Тема: ПК8000 - Квазидиск

  1. #51

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Mick Посмотреть сообщение
    Можно сделать вообще на одной типа ATF15V8 или ATF22V10 вместе с мультиплексором. Я делал исходя из расспространнености логических элементов(которые у меня есть).
    Если на одной, да распространённой, то логику лучше в ПЗУ-шку засунуть

  2. #52

    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    10,141
    Спасибо Благодарностей отдано 
    216
    Спасибо Благодарностей получено 
    769
    Поблагодарили
    417 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    И все-таки программать такую штуку не очень удобно.
    Mick, может обдумаешь вариант, когда для хранения номеров страниц будут использоваться 4 полубайта из 155РУ2 (остальные 12 не будут использоваться)? Т.е. примерно как программирование палитры на векторе, задаем адрес (на векторе номер цвета, на ПК номер области памяти) и задаем содержимое (на векторе физический цвет, на ПК 8000 номер страницы).
    Что то заморочно. А что же со страничностью в 64кб. Тут уж вас непонять совсем. А в чем преимущество.
    Слобать можно все или почти все, но хотелось бы определиться.
    Тут уж не про многозадачность ты там замышляешь, типа запускать с одного и того же адреса и каждая программа в своей странице
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

  3. #53

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Mick Посмотреть сообщение
    запускать с одного и того же адреса и каждая программа в своей странице
    Ну да, и переключать по прерыванию Даёшь линукс на ПК8000!

  4. #54

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

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Ну да, и переключать по прерыванию Даёшь линукс на ПК8000!
    Линукс-неЛинукс, а UZIX можно было бы портировать. Я уже запланировал себе на будущее полугодие - буду для Ориона пытаться портировать. Сейчас пока читаю исходники - в принципе все понятно, и главное есть и компилятор (HiTech C глючный) и исходники - ядро, либы и приложения. Осталось только взять да сделать. И переключать задачи как раз за счет диспетчера по 64к (почему я сразу про него и заявил). Одна задача - одна страница. Переключение контекста - одной командой OUT (упрощая). Что не поместится в странички памяти - свопить на HDD.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  5. #55

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    переключать задачи как раз за счет диспетчера по 64к (почему я сразу про него и заявил). Одна задача - одна страница
    1. Использовать целых 64к ОЗУ на одну задачу - расточительно.
    2. В современных ОС есть такое понятие, как разделяемая библиотека (.so или .dll), было бы логично разместить код таких библиотек в отдельной странице (например те-же 16кб) и использовать для всех задач.
    3. Необходимо также иметь возможность меж-процессных коммуникаций, т.е. необходимо подключать часть пространства другого процесса.
    Последний раз редактировалось b2m; 08.10.2008 в 16:08.

  6. #56

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

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    1. Использовать целых 64к ОЗУ на одну задачу - расточительно.
    2. В современных ОС есть такое понятие, как разделяемая библиотека (.so или .dll), было бы логично разместить код таких библиотек в отдельной странице (например те-же 16кб) и использовать для всех задач.
    3. Необходимо также иметь возможность меж-процессных коммуникаций, т.е. необходимо подключать часть пространства другого процесса.
    UZIX не поддерживает общую память для коммуникации, только сигналы, а для них в сущности не нужно ничего. С другой стороны, я ни в коем случае не буду спорить: 4 одновременных окна по 16к это более гибко, чем одно на 64к. Главное, что результат достигается - 64 к на процесс и быстрое переключение (без LDIR-ов и аппаратного копирования массивов ОЗУ). Ограничивать процесс заведомо меньшим объемом - это плохо, т.к. процессор адресует 64к, и это минимум в который на С можно скомпилировать хоть какой-то функционал (порядка 2000 строк исходника - всего навсего), в меньший объем поместится разве что hello world.
    Разделяемые библиотеки это безусловно хорошо, и было бы полезно, но сложно реализуемо, т.к. потребуется внедреж в компилятор, а на него нет исходников. Ну, это опять же если говорить про UZIX / HiTech C. Другое не рассматриваю, т.к. написать свое с нуля ИМХО нереально, по крайней мере для меня - будь то хоть ядро ОС, хоть компилятор ANSI C.
    Последний раз редактировалось Error404; 08.10.2008 в 16:34.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  7. #57

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    64к, и это минимум в который на С можно скомпилировать хоть какой-то функционал
    Это всё потому, что библиотеки прицепляются. А если будет внешняя C RTL, то будет гораздо меньше.

    Цитата Сообщение от Error404 Посмотреть сообщение
    Разделяемые библиотеки это безусловно хорошо, и было бы полезно, но сложно реализуемо, т.к. потребуется внедреж в компилятор
    Абсолютно нет необходимости изменять компилятор. Главное, это чтобы он мог пристегнуть вместо реальной библиотеки заглушку, которая загрузит и свяжет внешнюю библиотеку. Т.е. чтобы вместо библиотеки прицеплялась куча JMP-ов.

    Добавлено через 2 минуты
    Цитата Сообщение от Error404 Посмотреть сообщение
    UZIX не поддерживает общую память для коммуникации, только сигналы, а для них в сущности не нужно ничего
    Не совсем понятно, как загружать новые задачи, если переключать полностью всё адресное пространство.
    Последний раз редактировалось b2m; 08.10.2008 в 16:46. Причина: Добавлено сообщение

  8. #58

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

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Не совсем понятно, как загружать новые задачи, если переключать полностью всё адресное пространство.
    Нужен некий непереключаемый сегмент. В Орионе он есть - аппаратно не переключаются верхние 4к, в которых 3к ПЗУ+порты (ненужные в-общем то) и только 1 к испольуется для обеспечения связи страниц. На другой железке с независимыми страницами (например эхотаге), ничто не мешает диспетчером 16к проинициализировать 64к-страницы - записать в верхний 1к одинаковый для всех страниц код обеспечения связи страниц, а уже затем при помощи процедур, размещенных в этих 1К, переключать страницы по 64к имея оставшиеся 63к под процесс.

    Цитата Сообщение от b2m Посмотреть сообщение
    Это всё потому, что библиотеки прицепляются. А если будет внешняя C RTL, то будет гораздо меньше.
    Абсолютно нет необходимости изменять компилятор. Главное, это чтобы он мог пристегнуть вместо реальной библиотеки заглушку, которая загрузит и свяжет внешнюю библиотеку. Т.е. чтобы вместо библиотеки прицеплялась куча JMP-ов.
    Вот про это то я и не уверен. Не припоминаю никаких опций компилятора или процедур в библиотеках, регулирующих связывание этапа выполнения. Компилятор тупо собирает большой выполняемый файл и все. На CP/M подругому в те времена еще не было придумано нигде. Были слабые попытки реализовать оверлеи, но пользоваться оверлеями было очень неудобно, т.к. там совсем другой подход.

    А про заглушку я не понял. Обычную библиотеку, состоящую из набора jmp (или "dispatcher16k_on(); call(_func); dispatcher16k_off(); ret" ) собрать не проблема для любого компилятора. Имена функций в ней будут какие пропишешь, хотя бы и аналоги libc. Или имелось в виду что-то другое?
    Последний раз редактировалось Error404; 08.10.2008 в 17:02.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  9. #59

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Или имелось в виду что-то другое?
    Нет, не другое. Я имел ввиду: подменить библиотеку libc на такую, которая перед вызовом main просит ядро загрузить библиотеку и инициализировать адреса в имеющейся куче команд JMP. Хотя, библиотека всё равно будет по фиксированным адресам, так что ничего в этих JMP-ах менять не нужно. Разве что, инициализировать номер страницы, где находится библиотека.

    Добавлено через 2 минуты
    Если эти jmp-ы (ну или то, что ты написал) будут в начале программы, то она может даже перекрываться с libc, т.е. иметь размер в 64Кб без учёта libc
    Последний раз редактировалось b2m; 08.10.2008 в 17:20. Причина: Добавлено сообщение

  10. #60

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

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Нет, не другое. Я имел ввиду: подменить библиотеку libc на такую, которая перед вызовом main просит ядро загрузить библиотеку и инициализировать адреса в имеющейся куче команд JMP. Хотя, библиотека всё равно будет по фиксированным адресам, так что ничего в этих JMP-ах менять не нужно. Разве что, инициализировать номер страницы, где находится библиотека.

    Добавлено через 2 минуты
    Если эти jmp-ы (ну или то, что ты написал) будут в начале программы, то она может даже перекрываться с libc, т.е. иметь размер в 64Кб без учёта libc
    В современных компиляторах можно опцией указывать точку входа в пользовательский код. Т.е. можно написать библиотеку с функцией init(), которая из своего тела вызывает _main. Компилируя бинарник, линковать его с этой библиотекой и указывать в опциях компиляции init как точку входа. Думаю, и HiTech С такое может (надо посмотреть). Даже если и не умеет, то это можно решить маленькой присадкой типа вируса, которой обрабатывать уже готовый бинарник получая на выходе init+main.

    В-общем, надо браться за работу
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

Страница 6 из 9 ПерваяПервая ... 23456789 ПоследняяПоследняя

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

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

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

Похожие темы

  1. ПК8000 - Общие вопросы
    от Mick в разделе ПК8000
    Ответов: 601
    Последнее: 03.11.2025, 00:03
  2. ПК8000 - Утилиты
    от XobbiMan в разделе ПК8000
    Ответов: 103
    Последнее: 22.06.2023, 00:09
  3. Ответов: 206
    Последнее: 30.05.2022, 17:15
  4. ПК8000 - Железные вопросы
    от ivagor в разделе ПК8000
    Ответов: 30
    Последнее: 18.05.2016, 19:17
  5. Ответов: 71
    Последнее: 25.02.2010, 22:40

Ваши права

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