User Tag List

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

Тема: Корвет: ExtROM Open Source extender

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

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

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Итак, очередной этап разработки готов к тестированию. На этот раз мы имеем 2 крупных изменения.

    В биосе формируется таблица из 4 слов, содержащих адрес поля DRVMASK каждого из 4 DPB. Еще раз подчеркиваю - указатели показывают именно на байт с маской, а не начало официального DPB (CPMTxx).
    В вызов SELDSK добавлен вариант C=FE. При этом в HL возвращается адрес этой таблицы. Теперь mount берет адреса DPB именно из этого вызова. Если он нарвется на старый биос, не поддерживающий это расширение, то в HL вернется признак ошибки 0000, и mount об этом скажет.
    Также я обучил mount работать через bdos GETVER, и для microdos он теперь показывает только 2 диска. Проверить я этого пока не могу - нужен патч на микродос.

    Второе изменение касается идеи ESL о mount-диске. Я хорошо подумал, и добавил в BIOS еще один диск с параметрами, идентичными рамдиску, и тоже прошитыми в биос намертво. Теперь рамдиск переехал на F, а на E монтируется образ EXRTOOLS.DSK, лежащий в корне карты (ну или прямо в каталоге extrom эмулятора). Расширение DSK я использовал потому, что это совсем не KDI файл. Он не имеет ни инфосектора, ни системных дорожек, а сразу начинается с каталога, и имеет размер 144К. Его параметры, как и для рамдиска, жестко забиты в биос, и перемонтировать его невозможно. Сейчас диск доступен для чтения-записи, в будущем запись надо отключить, во избежании разрушения информации на нем. И сделать через API включение разрешения записи для возможности обновления содержимого диска. На диск можно положить mount, pip, stat, ну и что там еще бывает часто нужно. С микродосом, как я понимаю, такой вариант не пройдет - там невозможно добавить еще один DPB. Там придется или пожертвовать рамдиском, или что-нибудь еще придумать.

    Соответственно, контроллер и эмулятор обучены корректно обрабатывать вызовы с DRV=4. Патчи для эмулятора я прикладываю, прошивка контроллера будет завтра - что-то после недельного отдыха мой корвет сглючил, надо его подремонтировать.

    ESL. Тебе придется сделать следующие изменения в биосах (в моем биосе все уже изменено, можешь прямо брать оттуда куски кода):

    1. Создать таблицу адресов масок, как я в начале написал. У меня в биосе она называется DRVMASKTBL. Для CP/M эти поля физически существуют в блоках DPB. Для микродоса создавай такую же таблицу, но из 2 слов (поскольку в системе только 2 диска), и реально использоваться там будет только слово для B, поскольку А всегда эмулируемый. Оно должно также указывать на адрес байта, в который mount будет записывать маску, а тебе в вызовах READ и WRITE придется ее проверять. И обнулить при старте системы.

    2. В вызове SELDSK при C=FE вернуть адрес этой таблицы в HL.

    3. В вызове READ и WRITE перенести проверку на рамдиск с DRV==4 на DRV==5. А при 4 принудительно перейти к обработке эмулируемых дисков, поскольку диск E не может быть физическим.

    4. Создать в биосе еще одну таблицу DPB, эквивалентную таблице рамдиска. Также создать для этого диска 18-байтовый массив распределения ALV, и головную таблицу DPH, поставив ссылку из нее на DPB и ALV.

    5. В таблицу списка устройств DRVTAB внести адрес созданной DPH в позицию E, а то, что там было раньше, перенести на позицию F.

    Вот вроде и все. В архиве прикладываю патчи для эмулятора, новый BIOS, новый mount, и EXRTOOLS.DSK - образ диска E. Его надо положить в корень карты, а в эмуляторе - в каталог EXTROM.

    Теперь насчет предложения заставить mount проверять наличие контроллера FDC и при его отсутствии не давать монтировать физические диски. Идея отличная. Только, как думаешь, можно ли из прикладной программы срать в порты FDC? Не нарушит ли это работу биоса? Вроде бы не должно. Завтра починю корвет, а потом добавлю это в mount.
    Вложения Вложения

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

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

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

Похожие темы

  1. Open source firmware for the Spectrum
    от zx-kit в разделе Разный софт
    Ответов: 60
    Последнее: 29.05.2014, 13:53
  2. open-source эмуляторы под .NET
    от Sawyer в разделе Эмуляторы
    Ответов: 1
    Последнее: 04.01.2011, 17:47
  3. GP2X F100 Open Source Gaming Console
    от CodeMaster в разделе Зарубежные компьютеры
    Ответов: 3
    Последнее: 12.06.2010, 23:51
  4. Open Source эмуль...
    от rg_software в разделе Эмуляторы
    Ответов: 50
    Последнее: 06.12.2006, 11:57

Ваши права

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