Re: вопрос по проганью в досе
---
...Я работаю антинаучным аферистом...
Искать надо по словам TSR, DOS, ASM, Assembler, Real-mode programming и Hardware Interrupts.
---
"Люди недалёкие обычно осуждают всё, что выходит за пределы их понимания."
Ларошфуко.
Вряд ли по словарю можно выучить язык.
может кто-нить помнит или даст ссылочку?"
---
...Я работаю антинаучным аферистом...
Могу запостить текст самодельной программы под Dos на ассемблере, которая перехватывает клавиши и записывает их в файл. Во времена доса ей пароли дыбал.
Кстати, 27h - устаревшая процедура
DOS вообще устаревшая система
1. как в досе сделать, что бы прога запускалась как демон?Нет там понятия демон. Ты можешь повесить собственный обработчик на какое-то прерывание, и он будет выполняться при каждом этом событии. Создается эффект демона.
(кажется когда-то был очень распространен пример программы, которая
следила за нажатием клавиш клавиатуры, и скидывала их в файл...)
2. как эмулировать нажатие клавиш клавиатуры?Записывать байтики в буфер клавиатуры.
(это тоже очень известная шняга была... на ассемблере помнится)
Конечно все эти советы без цифр пустые... Если не найдешь в инете список, на который ссылается КОНТРА, то я могу посмотреть в книжках. Но лучше, найди мне лень эти книги откапывать.
Эх, в школьные годы купил этот двухтомник за большие по детским понятиям деньги. Так был рад. Теперь он бесполезен, а отдать кому-то жалко. Ведь когда-то так хотел его купить.
ТОлько надо этот обработчик еще в памяти сохранить. 27 прерыванием. Если пишешь на языках уровня повыше, чем ASM, учти, что функции типа halt почему-то не всегда корректно работают. И не забудь необходимую проге память подобрать в директивах компилятора.
---
...Я работаю антинаучным аферистом...
Нет там понятия демон. Ты можешь повесить собственный обработчик на какое-то прерывание, и он будет выполняться при каждом этом событии. Создается эффект демона.
ТОлько надо этот обработчик еще в памяти сохранить. 27 прерыванием. Если пишешь на языках уровня повыше, чем ASM, учти, что функции типа halt почему-то не всегда корректно работают. И не забудь необходимую проге память подобрать в директивах компилятора.Повесить == сохранить.
Если я не путаю, то 27h действительно устарело. Обработчики прерываний меняются какой-то фукнцией из 21h.
В те времена у меня не было не только ноутбука, но даже компьютера. Поэтому книга намного лучше файла.
Ну, если у вас такие термины, спорить не буду. Короче, вешаем прогу в памяти каким-то (мнения разделились) прерыванием и переписываем вектор какого-нибудь прерывания (напр, 9h) на эту прогу.
2) когда сработало прерывание мы не хамеем, а запускаем старый обработчик, а потом уже свое действие
3) вешаем обработчики на несколько часто происходящих прерываний и проверяем, чтобы нас не перезатерли
4) обрабатываем повторный запуск нашей программы
5) сохраняем в глобальной переменной стековые регистры: прерывание сработало, то мы сохраняем текущие стековые перем (т.к. это будет не нашей проги стек) потом загоняем в стековые регистры наши значения, перед окончанием обработки должны вернуть все, как было.
ДО ТОГО КАК ВОСТАНОВИМ СВОЙ СТЕК не используем библиотечные функции C и функции DOS
6) и самое главное: перед тем как сделать программу резидентной ее нужно протестировать в ОБЫЧНОМ РЕЖИМЕ!
Язык проще всего выбрать С с асмовскими вставками, или заморачиваться на асме
компиляторы: turbo C 2.0 (очень много примеров таких программ или tasm 5.0 (тоже богато с исходниками)
Самый новый компилятор под DOS это старенькие версии Watcom.
---
...Я работаю антинаучным аферистом...
Функциями сей и вообще любыми функциями, не затрагивающими прерывания ДОС, пользоваться можно
ищи доки по написанию резидентов. Пишешь свой обработчик на 16h прерывание. Не забудь потом вызвать тот обработчик, который до тебя там стоял. Можно обращаться напрямую к порту клавы, а можно считывать из буффера.
Оставить комментарий
clubfishka
раньше умел и знал шде найти, а сейчас забыл...может кто-нить помнит или даст ссылочку?
1. как в досе сделать, что бы прога запускалась как демон?
(кажется когда-то был очень распространен пример программы, которая
следила за нажатием клавиш клавиатуры, и скидывала их в файл...)
2. как эмулировать нажатие клавиш клавиатуры?
(это тоже очень известная шняга была... на ассемблере помнится)
можно на с/с++, паскале и, на крайняк, на ассемблере?