Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 164 165 166 [ 167 ] 168 169 170 ... 210


Что-то у меня Dev.Toolkit for OS/2 Warp к Ваткому WC10.0 прикрутить не получается. Говорит definition of macro Far16 not identical previos definition. Что делать?

Воткните где-нибудь определение IBMCPP или -D IBMCPP в командной строке или #define перед #include <os2.h>.

Для Ваткома 10.5a надо не просто d IBMCPP, а

-d IBMCPP =1.

Пишу: printf ( * );, а он сразу ничего не печатает. Что делать?

В стандарте ansi, чёткого определения как должны буферизовываться потоки stdin/stdout/stderr нет, нормальным является поведение со строчной буферизацией stdout/stdin.

Всякие другие дос-компилеры обычно не буферизуют stdout совсем, что тоже нормально. Признаком конца строки в потоке является \n, именно при получении этого символа происходит flush для line buffered потока.

Выходов два: отменить буферизацию ии писать \n в нужных местах. Можно fflush(stdout) звать, тоже вариант.

Буферизация отменяется setbuf(stdout,NULL) или setvbuf(stdout,NULL, IONBF,0).

Можно ли сделать встроенный в ехе-шник DOS4GW, как в D00M?

Легально - нет. Предыдущие версии позволяли просто скопировать:

copy /b dos4gw.exe + a.exe bound.exe

Но сейчас (начиная с версии 10.0а) это не работает и для этой цели нужно приобрести dos4gw/pro у фирмы Tenberry Software.

Нелегально - да. Существует утилита dos4g/link для автоматизированного выдирания и вклеивания экстендеров из/в EXE-файлов. Помещалась в WATCOM.C в uuencode и доступна от автора.

Нужно взять не тот DOS4GW, что в комплекте (DOS4GW 1.97), а Pro-версию (DOS4GW Professional). Выдрать можно из DOOM, HERETIC, HEXEN, WARCRAFT2 и т.д., где он прибинден. Причем можно найти 2 разновидности Pro 1.97 - одна поддерживает виртуальную память, другая нет и еще что-то по мелочи.



Различаются размерами (который с виртуалкой - толще). Прибиндить можно разными тулзами, например PMWBIND из

комплекта PMODE/W.

Также можно отрезать у dos4gw.exe последние несколько байт с хвоста, содержащие строку WATCOM patch level [...]. Далее обычным бинарным копированием:

copy /b dos4gw.exe myexe.exe mynewexe.exe Работоспособно вплоть до версии DOS/4GW 1.95. В

версии 1.97 введена проверка на внедренность linexe в хвост

экстендера.

Еще существует родной биндер для DOS/4GW. Он в какой-то мере может помочь pmwbind.exe от PMODE/W (однако версия 1.16 не понимала каскадный формат DOS/4GW, работоспособна для одномодульного 4GW/PRO); решает проблему тулза dos4g/link, которая доступна у автора или у модератора.

Рекомендуется попробовать 4GWPRO (выдрать из игрушек с помощью pmwbind.exe или dos4g/link), усеченный вариант DOS/4GW (в модулях 4grun.exe, wd.exe - для ДОС), а также

PMODE/W.

В поставке DOS4G есть 4GBIND.EXE (но для этого надо купить или украсть DOS4G).

Как определить количество свободной памяти под dos4gw? Попытки использовать memavl и memmax не дают полную картину. Что делать?

Количество свободной памяти под экстендером - не имеет смысла, особенно если используется своппинг. Для определения наличия свободного RAM нужно использовать функции DMPI, пример использования есть в хелпе.

Как добраться до конкретного физического адреса под экстендером?

Вспомните про линейную адресацию в dos4gw. Он в этом плане очень правильно устроен - например, начало сегмента 0xC000 находится по линейному адресу 0x000C0000.

Вот примерчик, который печатает сигнатуру VGA биоса.

#include <stdio.h> #include <string.h> #include <ctype.h> void main( void )



unsigned i;

for( i = 0; i < 256; i++) char c;

c = *(char*)( 0x000C0000 + i ); putchar( isprint( c ) ? c: . );

Как отлаживать программы, работающие в Pharlap режиме?

wd /tr=pls file.exe,

для фарлапа или

wd /tr=rsi file.exe для dos4gw.

Какая разница между dos4gw и Pharlap? Или это одно и то же?

Это разные экстендеры. Самая существенная для вас разница - dos4gw входит в поставку Ваткома, а фарлап - нет.

Что такое RUN386.EXE? Вроде с его помощью можно пускать фаpлаповые ехе-шники?

Это рантайм фарлапа. Ho он денег стоит.

DOS4GW такой огромный (больше 200 к), что можно использовать вместо него, чтобы поменьше диска занимало?

Существует шароварный экстендер PMODE, у которого есть версия, рассчитанная на Watcom - PMODE/W, ее можно использовать вместо DOS4GW, она занимает всего 9 к, встраивается внутрь ехе-файа.

Он не обрабатывает некоторые исключительные ситуации, поэтому отлаживать программу все-таки лучше с dos4gw, а встраивать pmode/w лишь в окончательный вариант.

100% совместимости c dos4gw никто, конечно, гарантировать не может, но говорят, что под ним удалось запустить даже D00M.

Более того, 100% совместимости просто нет - например, графические программы под DOS/4G в Цинке, которые определяют наличие DOS/4GW путем вызова int 21h,

ah = 0xFF.

При этом DOS/4GW и PMODE/W возвращают различный (хотя и похожий) результат.



1 ... 164 165 166 [ 167 ] 168 169 170 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика