! (dos) Реализация резидентной программы на Си

Тема в разделе "WASM.BEGINNERS", создана пользователем Microedition, 31 авг 2009.

  1. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Привет,

    кто-нибудь пробовал писать резиденты в DOS на на языке Си?
    не могли бы вы дать пример такой программы.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Microedition
    Код (Text):
    1. /*
    2. *
    3. * test.c
    4. *
    5. * Компиляция: bcc.exe -ms test.c
    6. *
    7. */
    8.  
    9. #include<stdio.h>
    10. #include<dos.h>
    11.  
    12. #define CTRL_ALT 0xC
    13.  
    14. #define DEL 83
    15.  
    16. void interrupt (*old)();
    17. void interrupt new9();
    18. char far *reg = (char far*)0x417;
    19.  
    20. void main()
    21. {
    22.   old = getvect(9);
    23.   setvect(9, new9);
    24.   printf("Программа стала резидентной\n");
    25.   keep(0, (_SS + (_SP/16) - _psp));
    26. }
    27.  
    28. void interrupt new9()
    29. {
    30.   if(inportb(0x60) == DEL && (*reg & CTRL_ALT) == CTRL_ALT)
    31.   {
    32.     outport(0x20, 0x20);
    33.     sound(800);
    34.     delay(500);
    35.     nosound();
    36.   }
    37.   else
    38.     old();
    39. }
     
  3. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    q_q
    ага, спасибо