Countdos.c
Upload User: dq031136
Upload Date: 2022-08-08
Package Size: 802k
Code Size: 1k
Development Platform:

C++ Builder

  1. #include <stdio.h>
  2. #include <dos.h>
  3. #include <dir.h>
  4. int function[255];  // DOS services
  5. void interrupt far (*original_handler)();
  6. void interrupt far handler(void)
  7.  {
  8.    char i;
  9.    asm { mov i, ah }
  10.    
  11.    function[i]++;
  12.  
  13.    _chain_intr(original_handler);
  14.  }
  15. void main(void)
  16.  {
  17.    int i;
  18.         
  19.    for (i = 0; i < 255; i++) // Zero the function counts
  20.      function[i] = 0;
  21.    original_handler = _dos_getvect(0x21);
  22.    _disable();
  23.    _dos_setvect(0x21, handler);
  24.    _enable();
  25.    printf("This is a messagen");
  26.    fprintf(stdout, "This is a second messagen");
  27.    printf("Current disk is %cn", getdisk() + 'A');
  28.    _disable();
  29.    _dos_setvect(0x21, original_handler);
  30.    _enable();
  31.  
  32.  
  33.    for (i = 0; i <= 255; i++)
  34.      if (function[i])
  35.        printf("Function %x called %d timesn", i, function[i]);
  36.  }