| English, French, German |
|
|
| Главная · Программы · Пользователям · Разработчикам · Конкурсы · Партнерство · Информация · Форум |
|
Библиотека РАзных ВОпросов разработчикуМаленькие ценности PVOS - Add-Ins.J. Steingraber27 февраля 2001 перевод Олега Шаталова, sov-dusik@mail.ru Add-Ins используют специальный метод взаимодействия (коммутации) банков. Эта статья описывает, как использовать этот тип коммутации банков и как преодолеть необходимость выравнивания размеров Add-Ins по 64kB границе. ADD-In и коммутация Банков. Add-in размещаются в (виртуальном 32-Бит) адресном пространстве с адреса 0x01100000 до 0x011FFFFF. Переключение Банков 128kB-блоками возможно только по 128kB границам. Таким образом Если Add-in должен быть вставлен в адресное пространство CPU, только 8 ADD-ins могли бы быть размещены по адресам 0x01100000, 0x01120000, 0x01140000..., 0x011E0000. В действительности Add-in могут находиться и по адресам 0x01130000, 0x01150000...0x011F0000. Следовательно, максимально 16 Add-ins могут быть загружены (сохранены). Поскольку Add-ins не всегда находятся по 128kB-границам, имеются аппаратные средства для включения (подключения) нужного Add-ins. Переключение 16 кБ банков. Можно включать (вставлять, подключать) Add-in при помощи двух портов, которые позволяют включать и выключать 16kB области памяти. В байтовый порт 0x6C должно записываться смещение с 8 по 15 биты, в Word порт 0x6E записываются биты с 14 по 29 (виртуального 32-бит) адреса источника. В случае 64кБ Add-ins, который находиться по адресу 0x01120000, чтобы вставить его по адресу 8000:0000, должны быть проделаны следующие операции: OUT 0x6C,0x80 ; destination 8000:0000 OUT 0x6E,0x0448+0x8000 ; set highest bit to enable bank OUT 0x6C,0x84 ; destination 8400:0000 = 8000:4000 OUT 0x6E,0x0449+0x8000 OUT 0x6C,0x88 OUT 0x6E,0x044A+0x8000 OUT 0x6C,0x8C OUT 0x6E,0x044B+0x8000 Примечание: в качестве адресов назначения возможны только области от 8000:0000 до 9FFF:FFFF и от E000:0000 до E000:FFFF. Перекрытие с 128kB-банков не допустимо. ADD-in внутри ADD-in. Факт того, что коммутация Банков поддерживается 16kB блоками, может быть использован для хранения в памяти более, чем 16 приложений (Add-ins). AddInPack соединяет (слепливает) несколько небольших Add-in по 16kB границе в новый Add-in. Чтобы PVM могла работать с таким "сборником", должен настраиваться указатель длины в заголовке первого Add-in. К тому же необходимо установить второй байт всех добавленных Add-in в 0. Таким образом, они будут проигнорированы PVOS и PVM. Таким образом, созданный "сборник" станет для PVM и PVOS одним целым, как обычный Add-in. То есть может быть установлен или удален при помощи PVM, и первый Add-in будет отображается в меню PV и может запускаться в PVOS. Чтобы видеть "дополнительные" Add-ins и запускать их, нужна собственная программа, поскольку они невидимы для PVOS. Для этой цели служит PackMenu. PackMenu использует переключение 128 КБт банков, чтобы исследовать Add-In память. В каждом обычном Add-in ищутся дополнительные Add-in. Специальная запускающая программа, которая работает в стеке, отображает "упакованный" Add-in по адресу 8000:0000 и запускает его там. Перед этим в определенных переменных PVOS сообщается, какая область памяти должна отображаться после включения. посмотреть исходник программы Надеюсь, что эта маленькая подпрограмма будет так или иначе полезна... продолжение следует ;-) Идея принадлежит Michael D. (OrganiZer), www.pocket-viewer.de |
||||
| Все права связанные с торговыми марками, упоминаемыми на страницах этого ресурса, принадлежат их владельцам. Полное или частичное воспроизведение любых материалов, содержащихся на этом сайте, допускается только с условием размещения ссылки на этот сайт. |
||
| Пишите нам: admin@pocket-viewer.ru | © Алексей Ананьев-Миляр, 2001 www.melar.ru |
Hosted by valueHOST: Лидер Вэб-Хостинга |
|
|