intpm.pp 765 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. uses
  2. crt,
  3. go32;
  4. const
  5. int1c = $1c;
  6. var
  7. oldint1c : tseginfo;
  8. newint1c : tseginfo;
  9. int1c_counter : Longint;
  10. int1c_ds : Word; external name '___v2prt0_ds_alias';
  11. procedure int1c_handler; assembler;
  12. asm
  13. cli
  14. pushw %ds
  15. pushw %ax
  16. movw %cs:int1c_ds, %ax
  17. movw %ax, %ds
  18. incl int1c_counter
  19. popw %ax
  20. popw %ds
  21. sti
  22. iret
  23. end;
  24. var i : Longint;
  25. begin
  26. newint1c.offset := @int1c_handler;
  27. newint1c.segment := get_cs;
  28. get_pm_interrupt(int1c, oldint1c);
  29. Writeln('-- Press any key to exit --');
  30. set_pm_interrupt(int1c, newint1c);
  31. while (not keypressed) do begin
  32. gotoxy(1, wherey);
  33. write('Number of interrupts occured : ', int1c_counter);
  34. end;
  35. set_pm_interrupt(int1c, oldint1c);
  36. end.