Если Вы программировали для ZILOG-182, то знаете про его странично-оконную организацию памяти. Я своими словами попробую сказать. Адресация на 64К, физической памяти больше. Можно организовать до трех окон, в каждое окно включить разные куски физической памяти с определенными ограничениями. При этом ROM и RAM в физ.адресации перекрываются и есть возможность двигать границу, где начинается RAM.
Для пользовательских библиотек D-182 окна установлены:
1 - код системы, ОЗУ общих системных данных и функции с типом _RTLIMPORT
2 (начало 0х8000, размер 8К) - код пользовательской библиотеки
3 - стек, локальный heap и прочее
Во-первых, при вызове из своей библиотеки "дальней" функции (_LIBIMPORT - функция другой библиотеки) вместо кода вашей библиотеки в окно "2" подставляется код библиотеки, которая содержит вызываемую функцию.
Во-вторых, все константы компилятор помещает в сегмент библиотеки.
В этом вся проблема. Вы передаете "дальней" функции указатель на память от 0x8000 до 0xA000, после включения библиотеки во второе окно там уже не ваши данные.
могу сказать тока одно что под зилог писать люди не умеют, архитектуру стырили с ZX/Specy но толком прдумать менеджер памяти не смогли , аот по этому видимо и перешли на ось , люникс уже написан и точно умеетработать с памятью
ZX Spectrum? "стырили" процессор? что именно продумать не смогли? и куда перешли? Не надо программировать от души на "С" для D-182, не готов он... там ещё много всяких "сюрпризов"