Автор
|
Тема: О резидентных программах
|
Ilyia |
опубликован 14-01-2002 13:56 MSK
Всех со Старым Новым Годом ! Рылся я, рылся в различных исходниках в поисках резидентных программ и естественно находил не один десяток. Но вот беда: половина из них либо со встроенными ассемблеровскими процедурами( ассемблер я пока, к сожалению не знаю) либо громоздки т.е не подходят как учебные примеры. А мне сейчас для понимания нужны именно они.Поэтому я обращаюсь за помощью к вам. Вот скажем нужно написать (к примеру): 1. Прога, которая совершенно неожиданным образом 14 января ровно в 23 часа 45 минут 15 секунд 10 милисекунд вдруг перезагрузит мою тачку. ...ну и допустим... 2. Прога, которая скажем при переходе на "диск А" вначале заставит пропиликать внутренний динамик а уж затем и перейдёт на "диск А". Очень прошу привести примеры этих программ или хотя бы привести ТОЧНЫЙ алгоритм.
|
NOPIK
|
опубликован 14-01-2002 17:31 MSK
Тут без Ассемблера не обойтись. Но не потому, что только средствами Turbo Pascal нельзя решить эти задачи. Прерывания от таймеров, дисковых контроллеров - аппаратные, и могут возникать абсолютно в любой момент(также, как и события в резидентной программе).И если команды резидентной программы или обработчика прерывания нарушат состояние данных или аппаратных схем, то последствия их дальнейшей обработки системными программами трудно предугадать, а таймеры и дисковые контроллеры - это аппаратные схемы, работа которых при том, часто привязана к определенным моментам времени(удастся ли программе уложится в отведенные для обработки состояния микросекунды?). TP же предназначен для выполнения программ в среде MS-DOS или Windows и опирается на функции, доступные в этих системах. А в резидентных программах функции ОС в общем случае недоступны(они могут быть заняты другими программами или просто требовать иных режимов). |
NOPIK
|
опубликован 14-01-2002 17:35 MSK
Нет только одной последовательности действий, приводящей к заданной цели. Их всегда бесконечное число. |
Ilyia
|
опубликован 14-01-2002 19:20 MSK
Мне нужна сейчас хотя бы одна.. |
Ilyia
|
опубликован 15-01-2002 12:47 MSK
А можнт кто знает где есть исходники подобных программ ? |
Ilyia
|
опубликован 15-01-2002 12:48 MSK
В смысле на паскале и не громоздких |
NOPIK
|
опубликован 15-01-2002 02:55 MSK
Исходники вряд ли будут. Запуск TP-программ такого рода - самоубийство. Если первую еще можно запустить (и потом не трогать и ждать, пока сработает) - достаточно установить будильник через функцию 06; Int 1A, то вторая - с большой вероятностью что-то испортит(особенно если учесть, что сохранить значения регистров неизменными невозможно - программе потребуются, как минимум, DS и SP). В любом случае пробовать обработчики прерываний и резиденты лучше на ненужном компе(больше всего вероятность испортить диски записанным туда мусором. Самый ужасный, зато маловероятный вариант - запись мусора в РПЗУ с BIOS).
|
Valery Votintsev
|
опубликован 15-01-2002 12:53 MSK
2 Ilia: Несомненно, что _некоторые_ вещи лучше все-таки делать другими средствами, но тем не менее, на паскале МОЖНО СДЕЛАТЬ ВСЁ, что угодно.2 NOPIK: > Исходники вряд ли будут. Вай, зачэм такой сэрдитый? Будут исходники. Много исходников. Захады, дарагой: pascal.sources.ru/tsr/index.htm |
NOPIK
|
опубликован 15-01-2002 13:13 MSK
2 Valery Речь шла об ОТСУТСТВИИ в программе инструкций ассемблера или inline-кода. |
sWap
|
опубликован 20-01-2002 19:58 MSK
Набери слово keep и вызови по нему Help кнопкой Ctrl-F1 |