MERCURY127

Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору dimitriy7 Цитата: есть какой-то готовый простой способ запихнуть бОльший кусок кода, то буду рад узнать | простых способов с гарантией работоспособности нет. зато есть пара идей, как решить проблему... сделайте два тестовых примера, с отладочными данными и указанием, где нужные функции начинаются и кончаются. и где их данные лежат. ну короче, map с пояснениями. один с оригинальной CRT и глюками, второй с вылеченной CRT. и описание патча тоже. а я попытаюсь уместить этот патч на место оригинальных функций. какова разница в длине между оригинальной и вылеченной CRT? если там десяток байт — еще можно помудрить, а если сотня — смысла нет. Добавлено: про нопы — да, я соврал, пересказывая по памяти пояснение к одному из патчеров. точнее, ошибся в том, что циклы там не из нопов, а счетчик крутят. такой процы не пропускают, но счетчик обнуляется раньше чем успевают тикнуть часы. ну в принципе, 32-битного счетчика хватит до частоты ядра в 4*18 = 70 ГГц, если счетчик беззнаковый. лет на 10 еще должно хватить Добавлено: это была первая идея. а вторая нуждается в некотором уточнении: я правильно понимаю, что crt перехватывает инт 08h? если так, то появляется возможность написать резидента, который, запускаясь перед нашей паскалевой прогой, установит тик таймера не в 55 мс, а например, в 10 мкс, и проблема отступит без всякого вмешательства в код... нет. не перезхватывает. вместо этого смотрит байт 040:06C. странно. вроде там уже 32-битных счетчик, а сохраняют почему то только 16 бит... а, это они еще на 55 делят и сохраняют такты в 1 мс. ну что ж, ок, думаем... это, я так понимаю, процедура оценки, сколько тактов в 55 и далее в 1 мс а это процедура задержки на N = SS:[BX+4] мс мысли вслух: 1) у нас достаточно места, с учетом дальнейшей переработки этого участка кода, чтоб сохранить тут дворд. да, вместо [001f4] можно хранить тут, прямо в коде, обращаясь через префикс CS: 2) поскольку мы патчим прогу для работы на заведомо 32-битных машинах, ничто не мешает нам оперировать 32-битниыми регистрами пошел патчить  |