![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Резидентные программы в DOS-e
extrasens © (2003-11-18 07:59:00)
Кто-нибудь знает, как сделать резидентную прогу под ДОСю?
Просто мне надо сделать свой обработчик прерывания.
LordOfSilence (2003-11-19 09:29:00) [1]
Экстрасенс, когда будешь писать, не забудь про директиву
компилятора {$M} :-)
Term (2003-11-19 09:22:00) [2]
в паскалевском хелпе есть исчерпывающий пример, токо не рабочий,
но ошибка легко поправима :)))
так что Keep + Сtrl+F1
Vlad Oshin (2003-11-19 08:22:00) [3]
> pasha_golub © (18.11.03 12:16) [4]
VMcL © (19.11.03 01:16) [6]
+
Halt(х) - завершение программы с кодом х
VMcL (2003-11-19 01:16:00) [4]
>>[4] pasha_golub © (18.11.03 12:16)
Ответ неправильный! :))
Всё-таки Keep, а не Halt.
User_Name (2003-11-18 16:51:00) [5]
Что-то примерно так когда-то писал (может поможет)
{Свое прерывание int 21h}
...
procedure int21; Assembler;
asm
pushf
cmp ax,1235h
jnz @1
mov ax,1234h
popf
retf 2
@1:
push ax
push ds
xor ax,ax
mov ds,ax
cmp word ptr ds:[04F0H], 0DEADh
jnz @2 {@2}
xor ax,ax
mov ds,ax
mov word ptr ds:[04F0H], 0DEEDh
call create //Вот здесь вызываем свою продцедуру
pop ds
pop ax
popf
int 0e4h
retf 2
@2:
pop ds
pop ax
popf
int 0e4h
retf 2
end; {End of int 21h}
..
begin {Main program}
regs.AX:=$1235;
Intr($21,regs);
swapvectors;
if regs.AX<>$1234 then
begin
GetIntVec($21, OldInt21);
SetIntVec($E4, OldInt21);
SetIntVec($21, Addr(Int21));
keep(0);
end;
end.
pasha_golub (2003-11-18 12:16:00) [6]
2Vlad Oshin
И Halt, если не ошибаюсь, со спец. аргументом
Vlad Oshin (2003-11-18 11:52:00) [7]
В Паскале
GetIntVec
SetIntVec
Keep
+F1 :)
АСМиД (2003-11-18 11:27:00) [8]
Вообще подобные вещщи писались на Paskal 7 в режиме DOS.
Под виндами подобная штука работать не будет (если только под 3.11)
Если сильно нужно могу выслать пример.
SkyRanger (2003-11-18 08:56:00) [9]
А она, ента прога, под досей будет работать ил под форточкой зависать, если под второй не советую даже браться...