User Tag List

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

Тема: Pentagon-1024/4096 от Northwood

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

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

    Регистрация
    06.01.2011
    Адрес
    г. Днепр, Украина
    Сообщений
    804
    Спасибо Благодарностей отдано 
    43
    Спасибо Благодарностей получено 
    198
    Поблагодарили
    100 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hysk Посмотреть сообщение
    Какие новости проекта? Как там с производством плат?
    Пришлось сделать ряд значительных изменений в менеджер памяти, а так же пересмотреть поддержку карты DivIDE:

    По менеджеру памяти:

    В этом проекте будет поддержка псевдо-многозадачности, позволяющая загружать одновременно до 31 программ. Как это будет выглядеть:
    По-умолчанию будет доступен некий объём ОЗУ (1 МБ, 2 МБ или все 4 МБ, это нужно будет решить в ходе написания новой BIOS, т.к. определяться будет прошивкой BIOS).
    Допустим, пользователь хочет загрузить сразу несколько программ. Пользователь нажимает кнопку "Magic", попадает в меню управления задачами. Там он выбирает объём памяти для задачи, расположение задачи в памяти будет выбираться автоматически, сохраняет, выходит в стандартный режим Меню-128, TR-DOS, Basic-48 или Gluk, где может загрузить программу. Далее снова нажимает кнопку "Magic", там он может создать новую задачу, выбрав для неё объём памяти, или переключиться на ранее созданную задачу, выходит либо в Меню-128, TR-DOS, Basic-48, Gluk для загрузки новой программы, или в прерванную ранее программу. Т.е. всегда выполняется только одна текущая задача, пользователь сможет в любой момент через кнопку Magic переключаться между задачами или создавать новые, если ещё есть свободная память.

    Доступные объёмы памяти для задачи: 128 КБ, 256 КБ, 512 КБ, 1 МБ, 2 МБ или однозадачный режим - все 4 МБ. Соответственно, если всем задачам выделить по 128 КБ, то поместится 31 программа, а если по 1 МБ, то до 3-х задач объёмом 1 МБ + задачи с выделенным для них меньшего объёма ОЗУ (последние 128 КБ будут использоваться в многозадачном режиме для хранения карты занятой памяти, регистров процессора для каждой задачи, значения портов #7FFD, #DFFD, #1FFD и #EFF7 (в схеме не хватает чтения порта #EFF7, это необходимо, если программы используют расширенные видеорежимы), а так же для сохранения экрана 0-й задачи, который будет использоваться для диалога с пользователем). Экранная область в многозадачном режиме будет привязана к выбранной области ОЗУ.

    Аппаратно многозадачный режим реализован новым менеджером памяти, схему которого я привёл прошлый раз, и 5-битной маской старших разрядов номера страницы ОЗУ, посредством порта BIOS #FC37.

    Если определённый бит маски = 0, то соответствующий ему бит номера страницы ОЗУ доступен для свободного переключения программой, этот бит стандартно проецируется только на верхние адреса в пространстве #C000-#FFFF, и соответствующий бит проецирования экрана в видеоконтроллере = 0.
    Если определённый бит маски = 1, то соответствующий ему бит номера страницы ОЗУ блокируется в заранее заданном состоянии, определяя расположение задачи в ОЗУ, этот бит проецируется на всё адресное пространство #0000 - #FFFF, а так же он поступает на видеоконтроллер для нацеливания экранов на эту область ОЗУ.

    Дополнительно сделал одну доработку в самом менеджере памяти, позволяющую командами короткой адресации OUT (#FD), A управлять 256 КБ ОЗУ через порт #7FFD. Раньше через короткую адресацию было доступно только 128 КБ, т.е. теперь дополнительно доступен D6 #7FFD.

    Сложность была с тем, чтобы определиться, как дать пользователям возможность выбора, куда попадать по кнопке Magic - в управление задачами или стандартно в КЕШ. В данной ревизии я решил воспользоваться опцией отключения доступа к КЕШ-памяти по кнопке Magic, которую я сделал ранее. Если в BIOS-Setup включить доступ к КЕШ-памяти, то по кнопке Magic будем попадать в КЕШ, соответственно, управление многозадачностью будет недоступно. Если в BIOS-Setup доступ к КЕШ-памяти по кнопке Magic отключить, тогда по этой кнопке будем попадать в управление задачами, обработчик по адресу #0066 которого будет находиться в ПЗУ BIOS.

    Я рассматривал варианты сделать горячую клавишу во время нажатия Magic, но потом отказался от этой идеи потому, что в этом варианте появляется проблема, что клавишу опрашивать по Magic нужно, а значит это должен делать обработчик в ПЗУ BIOS, и если пользователь выберет КЕШ, то надо каким-то образом отключить ПЗУ BIOS и включить КЕШ, и сделать это возможно только использовав резидентную программу, которую необходимо скопировать в ОЗУ, а значит придётся немного подпортить либо область системных переменных, что недопустимо, либо экран, что хоть и не катастрофично, но тоже плохо. Поэтому этот вариант я и отбросил. Если пользователю не нужна многозадачность, он может включить в BIOS Setup доступ к КЕШ-памяти по Magic, и по этой кнопке будет сразу попадать в КЕШ не портя ни одного байта в ОЗУ.

    По поддержке карты DivIDE:

    Ради неё я делал отдельный слот ZX-Bus+3. Но мне дали спецификацию этой карты, из которой стало ясно, что она не только не заработала бы, а вообще препятствовала бы старту компьютера. Из документации на DivIDE, эта карта отслеживает переходы процессора на адреса #0000, #0008, #0038, #0066, #04C6, то DivIDE подключает своё ПЗУ вместо основного. Соответственно, DivIDE будет нормально работать в режиме "+3" с соответствующей прошивкой, но не даст компьютеру запуститься в стандартном режиме. Разумеется, блокировка одного IORQ на слот ZX-Bus+3 не помогла бы. Поэтому для решения задачи, в стандартном режиме нужно блокировать не только IORQ, а ещё M1.

    Для разрешения конфликта DivIDE с картами General Sound, ZXM General Sound и NeoGS, которые используют те же порты #B3 и #BB, нужно блокировать IORQ. Как оказалось, на карте ZXM-General Sound для этого есть дополнительный порт #33, который через D4 позволяет заблокировать карту. Карта NeoGS тоже содержит порт #33, но блокировка карты не предусмотрена. Классический General Sound этого порта не имеет вообще.

    В предыдущей ревизии платы была блокировка IORQ на шину NemoBus и ZX-Bus+3, но будет лучше, если на NemoBus не делать блокировки IORQ, которая даёт задержку этого сигнала около 6 нс и полностью изменить концепцию поддержки DivIDE. Я убрал слот ZX-Bus+3, заменив его на 4-й слот NemoBus, а вместо платки краевого слота +3 будет переходник, позволяющий подключать карту DivIDE в слот NemoBus. На этом переходнике будет реализован порт #33 для блокировки карты через D4, а так же формирование сигнала IORQCE, который будет блокировать порты компьютера, если будет идти обращение к DivIDE, когда работа этой карты разрешена через порт #33.
    Когда карта DivIDE будет запрещена, для неё будут блокироваться сигнал M1, чтобы карта не перехватывала переходы по списку адресов и не подключала своё ПЗУ, сигнал IORQ и блокироваться генерация сигнала IORQCE.
    Для того, чтобы карты General Sound и NeoGS не мешали работать карте DivIDE, последняя должна быть установлена через свой переходник в более приоритетный слот NemoBus. Если будет использоваться карта ZXM-General Sound, то с ней будет без разницы, какую карту в какой слот установить.

    Кроме этого, карты DivIDE, как оказалось, выпускались с разным конструктивом слота, как вдоль платы, так и перпендикулярно, поэтому в предыдущей ревизии материнской платы ещё не каждую карту DivIDE удалось бы воткнуть физически. Сделать универсальный переходник под разные конструктивы DivIDE будет проще, чем сделать эту универсальность на материнской плате.

    Последний раз редактировалось Northwood; 11.09.2020 в 16:38.
    С уважением, Александр

    Эти 4 пользователя(ей) поблагодарили Northwood за это полезное сообщение:

    Djoni(11.09.2020), Hysk(11.09.2020), Rusazar(12.09.2020), shurik-ua(11.09.2020)

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

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

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

Похожие темы

  1. Pentagon 1024
    от Ilyad в разделе Pentagon
    Ответов: 3
    Последнее: 24.06.2015, 15:28
  2. Ответов: 186
    Последнее: 01.07.2012, 18:43
  3. Pentagon – 1024 SL 2.2
    от skar в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 19.08.2008, 12:56
  4. Pentagon – 1024 SL 1.4
    от skar в разделе Барахолка (архив)
    Ответов: 19
    Последнее: 28.08.2007, 13:00
  5. Pentagon 1024 SL
    от breeze в разделе Pentagon
    Ответов: 7
    Последнее: 15.03.2005, 10:43

Ваши права

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