Никак не получается прочитать данные из PCI устройства (ПЛИС Altera), подключенного к шине PCI. 
В устройстве реализована память размером в 1МБайт. При инициализации, BIOS назначает базовый адрес, который успешно считывается функцией PCI BIOS 1Аh. (Находим устройство, читаем конфигурационное пространство). Работаем в защищенном режиме. 
Создается селектор, устанавливается базовый адрес дескриптора, равный прочитанному базовому адресу из конфигурационного поля устройства, устанавливается предел в 1МБайт (или ниже для проверки). При попытке считать байты из памяти командой seg_move() возникает Runtime error 216 at $... Назначаемый базовый адрес всегда $EFC00000. Машина - AMD Geode LX800, x86 совместимая.
Причем изредка программа работает, но максимальное смещение, по которому читаются данные - это $FFF, далее все таже ошибка! Что я должен прочитать я знаю! Устройство рабочее, есть альтернативные программы на visual c и ASM.
Уважаемые специалисты, подскажите как быть. Как читать память устройства, а то все примеры - как работать с буфером видеоадаптера или с областью памяти DOS.
(Применительно к FP для GO32v2 Dos extender. Compiler version 2.0.4)
			
		


 ,я выяснил, что как только я хочу установить базовый адрес дескриптора, превышающий или равный 1МБ (предел дескриптора памяти DOS), то программа вываливается с ошибкой Runtime Error 216 (превышение предела памяти!?). Если ниже 1МБ, то как только, я дохожу до предела 1МБ, при чтении данных, тоже самое - RTE 216. А мне нужен адрес $EFC00000. Как выйти из этой ситуации, незнаю. За ASM садиться неохото, долго код набирать.
  ,я выяснил, что как только я хочу установить базовый адрес дескриптора, превышающий или равный 1МБ (предел дескриптора памяти DOS), то программа вываливается с ошибкой Runtime Error 216 (превышение предела памяти!?). Если ниже 1МБ, то как только, я дохожу до предела 1МБ, при чтении данных, тоже самое - RTE 216. А мне нужен адрес $EFC00000. Как выйти из этой ситуации, незнаю. За ASM садиться неохото, долго код набирать.  


