|
Вопрос про прерывания в паскале, Как кроме моего оставить и штатное? |
|
|
|
Aug 27 2008, 09:25
|

Знающий
   
Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237

|
Цитата(zltigo @ Aug 27 2008, 12:49)  Понятно  переписали прием откуда-то не думая... Ну дык ... если сороконожка будет думать, как ходит её каждая нога - она вообще с места не сдвинется. А ресурс по Паскалю, откуда я это списал, и вправду неплохой http://pascal.sources.ru. Но то, что у меня это работает - истинная правда.
--------------------
Сделано в Китае. Упаковано в России.
|
|
|
|
|
Aug 27 2008, 10:15
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(zltigo @ Aug 27 2008, 14:36)  Надо отличать минимально необходимые настройки от лишних сущностей. Настройки есть, как данность. Так что сущностей не добавляется. [off]Меня удивляет вот что. Человек задал вопрос, на который вы не дали ответа, ибо у вас "нет желания вспоминать". Я дал готовый, проверенный вариант, и тут у вас неожиданно появилось это желание. Выходит, желание раскритиковать сильнее желания помочь?  [/off] Цитата(zltigo @ Aug 27 2008, 14:36)  В приведенном случае вызываемя функция вызывается с параметром  и декларирована, как обработчик прерывания. Это где? Вот это чтоль: Код type TInterrupt = procedure (Flags: Word); var OldIntHandler : TInterrupt; ? Какой же это обработчик? Цитата(zltigo @ Aug 27 2008, 14:36)  Слишком категорично  . Работает какая-то программа, имеет свой стек, на который и рассчитывает и вдруг ее кто-то прерывает и начинает пользовать ее стек  . Естественно стек делается с рассчётом на обработчик прерывания. Это гораздо проще, чем заводить отдельный стек на обработчик. "Зачем плодить лишние сущности"?  А моё возражение было насчёт того, что в DPMI надо делать что-то особенное со стеком, а то без этого не работает. Цитата(Demeny @ Aug 27 2008, 14:38)  Не возникает, если Вы не используете локальные переменные в своём обработчике. Конечно же использую, и ничего не валится. Дело наверное в чём-то другом. Может банально не хватает стека.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 27 2008, 16:29
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(AHTOXA @ Aug 27 2008, 12:15)  Человек задал вопрос, на который вы не дали ответа, ибо у вас "нет желания вспоминать". Если быть точным и прочитать написанное мной полностью, то нет желания вспоминать диалект Паскаля не имеющий актуальности с 90x годов. Помочь не оказывался, в том числе и конкретными кодом  . И обсуждать начал отнюдь не Паскаль, а подход к делу. Не нервничайте. Цитата ? Какой же это обработчик? Опять через слово читаете  это декларация обработчика. Цитата Естественно стек делается с рассчётом на обработчик прерывания. Да ну  А DOS, насамом деле вполне себе многозадачная система - драйвера, TSR-ы, само ядро... C чего Вы взяли, что прерывать будут исключительно Вашу программу c "рассчитанным" стеком?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 27 2008, 17:38
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(zltigo @ Aug 27 2008, 22:29)  Помочь не оказывался, в том числе и конкретными кодом  . Однако же не помогли  . Цитата И обсуждать начал отнюдь не Паскаль, а подход к делу. Не нервничайте. Да я не нервничаю. Просто удивляюсь... Цитата Опять через слово читаете  это декларация обработчика. Это вы через слово цитируете. Вы написали, что Цитата В приведенном случае вызываемя функция вызывается с параметром и декларирована, как обработчик прерывания. (выделение моё). Вот я и поинтересовался, где она декларирована как обработчик прерывания. Цитата C чего Вы взяли, что прерывать будут исключительно Вашу программу c "рассчитанным" стеком? Да, тут я был не прав. Посмотрел, почему же тогда у меня всё работало, оказывается я в прерывании работал только с глобальными переменными. Но продолжаю настаивать, что это не зависит от DPMI
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 27 2008, 19:07
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(AHTOXA @ Aug 27 2008, 19:38)  Однако же не помогли  . Однако предлагал C/C++/ASM но никого не заинтересовал  Цитата (выделение моё). Вот я и поинтересовался, где она декларирована как обработчик прерывания. Декларирована и используется как обработчик прерывания c фокусом ввиде запихивания в стек параметра. В борлянячем "С" можно и "естественее" c квалификатором interrupt. Код void interrupt (*old_xxx_vect)(...);
void interrupt xxx_handler(...) { ...... (*old_xxx_vect)(); ..... } Цитата Но продолжаю настаивать, что это не зависит от DPMI Продолжайте настаивать, только зачем обращаясь ко мне  ?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 27 2008, 19:18
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(zltigo @ Aug 28 2008, 01:07)  Декларирована и используется как обработчик прерывания c фокусом ввиде запихивания в стек параметра. Вот именно что декларирована она как обычная процедура с параметром типа word. А используется как обработчик прерывания. Кстати, какие гарантии, что параметр будет передан на стеке? Цитата Продолжайте настаивать, только зачем обращаясь ко мне  ? Да тут больше нет никого, а понастаивать охота
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|